Как вставить несколько пустых строк после каждой строки

8

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

foo.txt:

line 1
line 2
line 3

out.txt:

line 1





line 2





line 3    





...

Солярис 5.10 nawkили sed.

ayrton_senna
источник
Смотрите также Как я могу удвоить
перевод

Ответы:

12

Это работа для sed:

sed -e 'G;G;G;G;G' file

С awk:

nawk -vORS='\n\n\n\n\n\n' 1 file

Или более короткая версия:

awk 'ORS="\n\n\n\n\n\n"' file

или избегайте установки ORSдля каждой строки ввода:

awk 'BEGIN{ORS="\n\n\n\n\n\n"};1' file
cuonglm
источник
Или этот вариант:awk 'ORS="\n\n\n\n\n\n"'
Янис
Или этот вариант:sed 's/$/\n\n\n\n\n/g' file
Dani_l
@Dani_l: это работает только в GNU sed
cuonglm
@cuonglm этого не знал, спасибо за информацию. Какая часть специфична для GNU? \ n в замен?
Dani_l
@Dani_l: Да, \nв замене s///.
Cuonglm
0

Еще один, с printf

cat file.txt | xargs printf "%s\n\n\n\n\n"

Вывести это в файл

(cat file.txt | xargs printf "%s\n\n\n\n\n") > out.txt

Сергей Колодяжный
источник
0

Возможно, вы захотите использовать nlдля этого тоже. Это приходит мне в голову, потому что, когда я делаю подобные вещи, я часто нахожу полезным сохранить оригинальные номера строк.

eval "nl -ba -s'$(printf "\n\n\n\n\n'")" <infile

Также prесть спецификация для -dаргумента oublespace - который удваивает все переводы строк при вводе при выводе.

Но sedтоже хорошо.

mikeserv
источник