6

Таким образом, можно легко объединить файлы в bash с помощью cat:

cat *.txt > all.txt

Но что, если кто-то хочет вставить что-то между входными файлами, например, перевод строки?

2 ответа2

6

Как однострочник с подоболочками:

( 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 .

6

Требуется 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .