Как включить пустую строку между файлами, которые я конкатенирую с "cat"?

Я хочу котать все файлы в каталоге, но между ними есть несколько разделителей.

Ответ 1

использовать awk

awk 'FNR==1{print ""}{print}' file* > out.txt

Ответ 2

Try

find . -type f -exec cat {} \; -exec echo "-- spacer --" \;

Очевидно, что "spacer" может быть больше, чем простой пример, используемый здесь.

Ответ 3

Возможно, вы захотите увидеть pr(1), который может делать то, что вы хотите из коробки.

Чтобы перевернуть свой собственный, разверните фрагмент оболочки script posix:

ls -1  | while read f; do cat "$f"; echo This is a spacer line; done > /tmp/outputfile

Это может быть более удобно записать:

ls -1 | while read f; do
    cat "$f"
    echo This is a spacer line
done > /tmp/outputfile

Вам не нужен -1 для ls.

Ответ 4

Я думаю, что самый простой способ - использовать команду paste:

paste $(ls *) > file.out

Ответ 5

echo "" > blank.txt
cat f1.txt blank.txt f2.txt blank.txt f3.txt

Чтобы обрабатывать все файлы в каталоге (предполагая ksh как оболочку)

for file in * ; do
   cat $file >> result.txt
   echo "" >> result.txt
done