Я имею .txt
данные из спектрометра с 800 строками и 5 столбцов. И я хочу объединить приблизительно 15 этих файлов друг рядом с другом. Настолько окончательный .txt
файл должен иметь 800 строк и 75 столбцов.
Все .txt
файлы похожи на это:
Wave ;Sample ;Dark ;Reference;Absorbance
[nm] ;[counts] ;[counts] ;[counts] ;[A.U]
200.00; 34.647; -0.317; 79.668; 0.35734
201.00; 29.937; -21.220; 70.385; 0.25357
202.00; 48.826; -0.527; 99.657; 0.30721
203.00; 43.201; 4.165; 136.775; 0.53103
...
Желаемый файл:
Wave ;Sample ;Dark ;Reference;Absorbance; Wave ;Sample ;Dark ;Reference;Absorbance
[nm] ;[counts] ;[counts] ;[counts] ;[A.U]; [nm] ;[counts] ;[counts] ;[counts] ;[A.U]
200.00; 34.647; -0.317; 79.668; 0.35734; 200.00; 34.647; -0.317; 79.668; 0.35734;
201.00; 29.937; -21.220; 70.385; 0.25357; 201.00; 29.937; -21.220; 70.385; 0.25357
202.00; 48.826; -0.527; 99.657; 0.30721; 202.00; 48.826; -0.527; 99.657; 0.30721
203.00; 43.201; 4.165; 136.775; 0.53103; 203.00; 43.201; 4.165; 136.775; 0.53103
Я попробовал:
cat *.txt > file.txt
Но это добавляет .txt
файлы как новые строки не как новые столбцы.
Вы ищете paste
утилита, например.
paste *.txt > file.txt
Проверьте его страницу руководства на детали, прежде всего -d
опция указать разделитель.
Я установил разделитель, чтобы 'расположить с интервалами' и устранить несколько пробелов.
$ cat file-1
ett tu tre
1 2 3
11 22 33
$ cat file-2
fyra fem sex
4 5 6
44 55 66
$ cat file-3
sju atta nio
7 8 9
77 88 99
$ paste file-?
ett tu tre fyra fem sex sju atta nio
1 2 3 4 5 6 7 8 9
11 22 33 44 55 66 77 88 99
$ paste -d ' ' file-?
ett tu tre fyra fem sex sju atta nio
1 2 3 4 5 6 7 8 9
11 22 33 44 55 66 77 88 99
$ paste -d ' ' file-? | tr -s ' ' ' '
ett tu tre fyra fem sex sju atta nio
1 2 3 4 5 6 7 8 9
11 22 33 44 55 66 77 88 99
Возможно, Вы хотите устранить пробелы? Вы хотите сохранить точку с запятой как разделитель. Попробуйте следующей командной строкой
paste -d ';' input-filespec-with-wildcard | sed 's/ //g' > output-file
где input-filespec-with-wildcard
мог быть *.txt
(если файлы, которые будут объединены, являются единственным txt
файлы в каталоге).
Преобразуйте файлы в текстовый формат unix/linux, CarriageReturn + LineFeed
--> LineFeed
с dos2unix
Удалите пустые строки со следующей командой
for i in *.TXT;do echo sed '/^$/'d "$i" > "${i/.TXT/.txt}";done
Удалите строки заголовка со следующей командой
for i in *.txt;do grep ';*;' "$i" > "${i/.txt/.txt1}";done
(Строки заголовка не содержат по крайней мере две точки с запятой.)
Объедините файлы со следующей командой
paste -d ';' *.txt1 | sed 's/ //g' > merged-file.txt
Я считал объединенный файл в LibreOffice Calc и использовал точку с запятой в качестве разделителя. Похоже, что я думаю, что Вы хотите иметь его. Я надеюсь, что это работает на Вас согласно этим инструкциям. Иначе опишите свою остающуюся проблему и скажите мне, если Вы хотите, чтобы я загрузил 'мой' merged-file.txt
.
Если Вы хотите сделать это только однажды, можно сделать вручную/визуально в Office Libre Calc путем вставки файлов в электронную таблицу. Можно отредактировать положения в электронной таблице и удалить строки, которые создают беспорядок.
Я сказал бы, что довольно легко сделать это вручную в LibreOffice Calc, но если это - что-то, что Вы будете много раз делать или с большим количеством файлов, лучше использовать и возможно совершенствовать метод командной строки.