Как получить пустое слияние строки тексты?

Есть ли способ иметь команду

cat *tab > newfile.tab

вставьте Пустую строку между каждым файлом, который она объединяет?

2
задан 25 April 2017 в 18:28

2 ответа

Рычаги a for конструкция:

GLOBIGNORE=newfile.tab
for f in *tab; do cat "$f"; echo; done >newfile.tab

Расширенный:

GLOBIGNORE=newfile.tab
for f in *tab; do 
    cat "$f"; echo
done >newfile.tab
  • GLOBIGNORE=newfile.tab для исключения newfile.tab от оболочки globbing, поскольку это - наш выходной файл

  • for f in *tab выполняет итерации по файлам, заканчивающимся в tab

  • cat "$f" выходное содержание файла

  • echo добавляет новая строка

  • Дескриптор файла от >newfile.tab перенаправление сохранено открытым на время for т.е. файл newfile.tab открыт - закрытый однажды


Кроме того, можно использовать printf сделать форматирование однажды:

for f in file.txt*; do printf '%s\n\n' "$(<"$f")"; done

Расширенный:

for f in file.txt*; do 
    printf '%s\n\n' "$(<"$f")"
done
3
ответ дан 2 December 2019 в 01:43

Если Вы не возражаете против дополнительной пустой строки после последнего файла, Вы могли бы использовать sed, например,

sed -s '$G' *.tab > newfile.tab

(это использует GNU sed расширение -s, который рассматривает входные файлы отдельно; следовательно $G двойные интервалы последняя строка каждого файла).

при возражении против дополнительной строки Вы могли бы передать ее по каналу через другой sed:

sed -s '$G' *.tab | sed '$d' > newfile.tab
<час>

, С другой стороны, с awk

awk 'FNR == 1 && NR != 1 {print ""} 1' *.tab > newfile.tab
3
ответ дан 2 December 2019 в 01:43

Другие вопросы по тегам:

Похожие вопросы: