Таким образом, можно легко объединить файлы в bash с помощью cat:
cat *.txt > all.txt
Но что, если кто-то хочет вставить что-то между входными файлами, например, перевод строки?
Таким образом, можно легко объединить файлы в bash с помощью cat:
cat *.txt > all.txt
Но что, если кто-то хочет вставить что-то между входными файлами, например, перевод строки?
Как однострочник с подоболочками:
( for i in *.txt ; do cat $i ; echo 'separator here' ; done ) >all.txt
Вот что выполняет подоболочка, разбитая на строки в стиле сценария:
for i in *.txt do cat $i echo 'separator goes here' done
В этом примере разделитель действует как нижний колонтитул; добавить заголовок, добавив еще одно echo
перед cat
.
Требуется GNU sed
:
sed -s '$G' *.txt > all.txt
добавить строку из 8 штрихов и новую строку после каждого файла
sed -s '$a--------' *.txt
Вы можете использовать свой sed '$ d' с этим
Сравните с этим:
Вставьте строку тире перед каждым файлом:
sed -s '1i--------' *.txt
Сделайте то же самое, но без перевода строки после тире:
sed -s '1s/^/--------/' *.txt
Поместите строку из тире в конец последней строки каждого файла:
sed -s '$s/$/--------/' *.txt
Окружите каждый файл фигурными скобками:
sed -s -e '1i{' -e '$a}' *.txt