bash cat несколько файлов

Я пытаюсь cat три файла и получить и вставить новую строку n после каждого файла ,я думал использовать что-то вроде :

cat f1 f2 f3|tr "EOF" "n"

без успеха.

каков самый простой способ достичь этого ?

5 ответов


cat f1 <(echo) f2 <(echo) f3 <(echo) 

или

perl -pe 'eof&&s/$/\n/' a b c

как только cat файлы, между ними не будет EOF, и нет другого способа найти границу, поэтому я бы предложил что-то вроде for file in f1 f2 f3; do cat $file; echo; done или, с абзацного отступа,

for file in f1 f2 f3; do
    cat $file;
    echo;
done

EOF не символ, даже не CTRL-D - это просто обычный терминальный метод для указания EOF на интерактивном входе. Поэтому вы не можете использовать инструменты для перевода символов, чтобы как-то изменить его.

для этого простого дела,простой способ состоит в том, чтобы перестать беспокоиться о попытке сделать это в одном cat : -)

cat f1; echo; cat f2; echo; cat f3

будет делать трюк просто отлично. Любое большее количество файлов может быть достойно скрипта, но я не вижу необходимость в этом маленьком деле.

если вы хотите совместить все эти потоки для дальнейшей обработки, просто запустите их в подуровне:

( cat f1; echo; cat f2; echo; cat f3 ) | some_process

У меня была аналогичная проблема, что сработало лучше всего для меня, я моя ситуация была:

grep "" file1 file2 file3 | awk -F ':' '{print }'

попробуйте это:

find f1 f2 f3 | xargs cat