Я хочу котать все файлы в каталоге, но между ними есть несколько разделителей.
Как включить пустую строку между файлами, которые я конкатенирую с "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