У меня есть несколько файлов, с которыми я хочу соединиться cat
. Скажем
File1.txt
foo
File2.txt
bar
File3.txt
qux
Я хочу объединить, чтобы окончательный файл выглядел так:
foo
bar
qux
Вместо этого с обычным cat File*.txt > finalfile.txt
foo
bar
qux
Как правильно это сделать?
Ответы:
Ты можешь сделать:
Убедитесь, что файл
finalfile.txt
запуском указанной выше команды не существует.Если вам разрешено использовать,
awk
вы можете:источник
AWK '{print $0}' *.txt
awk 'FNR==1 && NR > 1 ...'
.>finalfile.txt
после,done
вы можете перезаписать вместо добавления, что уберет требование убедиться, что файл отсутствует или пуст перед циклом.Если у вас достаточно файлов, каждый из которых можно перечислить, то вы можете использовать подстановку процесса в Bash, вставив новую строку между каждой парой файлов:
источник
Если бы это делал я, я бы использовал sed:
В этом шаблоне sed $ имеет два значения: во-первых, он соответствует только номеру последней строки (как диапазон строк, к которым применяется шаблон), а во-вторых, он соответствует концу строки в шаблоне подстановки.
Если в вашей версии sed нет
-s
(обрабатывать входные файлы отдельно), вы можете сделать все это как цикл:источник
sed -s '$G' *.txt > finalfile.txt
find
вместо*.txt
, что означало, что файл был добавлен сам по себе!Вы можете сделать это,
xargs
если хотите, но основная идея все та же:источник
xargs
намного проще использовать циклы в bash.Это работает в Bash:
В отличие от ответов с
>>
(добавить) вывод этой команды может быть передан в другие программы.Примеры:
for f in File*.txt; do cat $f; echo; done > finalfile.txt
(for ... done) > finalfile.txt
(скобки не обязательны)for ... done | less
(переход к меньшему)for ... done | head -n -1
(это удаляет конечную пустую строку)источник
Вот так я только что сделал на OsX 10.10.3
поскольку простая команда 'echo' без параметров закончилась без вставки новых строк.
источник
В python это объединяется с пустыми строками между файлами (
,
подавляет добавление дополнительной конечной пустой строки):Вот уродливый однострочник Python, который можно вызвать из оболочки и распечатать вывод в файл:
источник