Я пытаюсь выполнить cat три файла и получить и вставить новую строку \n
после каждого файла я думал использовать что-то вроде:
cat f1 f2 f3|tr "\EOF" "\n"
без успеха.
Каков самый простой способ достичь этого?
Ответ 1
cat f1 <(echo) f2 <(echo) f3 <(echo)
или
perl -pe 'eof&&s/$/\n/' a b c
Ответ 2
Как только вы cat файлы, между ними не будет EOF, и нет другого способа найти границу, поэтому я бы предложил что-то вроде for file in f1 f2 f3; do cat $file; echo; done или, с отступом,
for file in f1 f2 f3; do
cat $file;
echo;
done
Ответ 3
EOF не является символом, даже CTRL-D, который является обычным терминальным методом для указания EOF на интерактивном входе. Поэтому вы не можете использовать инструменты для перевода символов, чтобы каким-то образом изменить их.
В этом простом случае самый простой способ - перестать беспокоиться о попытке сделать это в одном cat: -)
cat f1; echo; cat f2; echo; cat f3
сделает трюк просто отлично. Любое большее количество файлов может быть достойным script, но я не вижу необходимости в этом маленьком случае.
Если вы хотите объединить все эти потоки для дальнейшей обработки, просто запустите их в подоболочке: