Как объединить файлы в один с разрывом строки?

У меня есть файлы в каталоге:

1.txt
2.txt
3.txt

Одна строка на файл, и в конце каждого файла нет строки разрыва. Как объединить эти файлы в один с линией разрыва в конце каждого файла?

Если я бегу:

cat 1.txt 2.txt 3.txt > 123.txt

Файлы объединяются, но все содержимое становится одной строкой, из-за того, что в исходных строках нет разрыва строки. Как добавить разрыв каждой строки при слиянии?


person user697911    schedule 19.08.2017    source источник


Ответы (1)


echo > /tmp/line
cat 1.txt /tmp/line 2.txt /tmp/line 3.txt /tmp/line > 123.txt

Or:

{ cat 1.txt && echo && cat 2.txt && echo && cat 3.txt && echo; } > 123.txt

Or:

awk '{print}' {1,2,3}.txt > 123.txt

Or:

grep -h '' {1..3}.txt > 123.txt

Or:

cut -c 1- 1.txt 2.txt 3.txt > 123.txt

Or:

sed '' *.txt > 123.txt

Подойдет практически любой линейно-ориентированный текстовый фильтр, потому что все они знают, как работать с файлами, в конце которых не хватает символов новой строки. Только cat настолько прост, что не делает то, что вы хотите (отчасти потому, что люди используют его для данных, которые не являются текстом).

person John Zwinck    schedule 19.08.2017
comment
что такое эхо›/tmp/line? могу ли я использовать любой каталог? - person user697911; 19.08.2017
comment
@ user697911: /tmp/line — это просто временный файл, который я придумал. Вы можете поместить его в текущий каталог или любое другое место. - person John Zwinck; 19.08.2017