Подтвердить что ты не робот

Как вставить пустую строку в каждую строку, используя awk?

У меня есть входной файл, подобный этому:

line 1
line 2
line 3
line 4
line 5
line 6

Я хотел бы использовать awk для вставки пустой строки в несколько строк; например, каждые два:

line 1
line 2

line 3
line 4

line 5
line 6

Как я могу заставить awk поместить пустую строку в мой файл каждые n строк?

4b9b3361

Ответ 1

Более "awk-ish" способ написать smcameron ответ:

awk -v n=5 '1; NR % n == 0 {print ""}'

"1;" является условием, которое всегда истинно и будет инициировать действие по умолчанию, которое должно печатать текущую строку.

Ответ 2

awk '{ if ((NR % 5) == 0) printf("\n"); print; }'

для n == 5, конечно. Замените, какова бы ни была ваша идея n.

Ответ 3

awk '{print; if (FNR % 5 == 0 ) printf "\n";}' your_file

Я думаю, что "print" должен быть до "printf", а FNR более точна для вашей задачи.

Ответ 4

Больше awkishness:

awk 'ORS=NR%5?RS:RS RS'

Например:

$ printf "%s\n" {1..12} | awk 'ORS=NR%5?RS:RS RS'
1
2
3
4
5

6
7
8
9
10

11
12

Ответ 5

$ awk -v n=5 '$0=(!(NR%n))?"\n"$0:$0'

Если вы хотите изменить "n", установите параметр "n" на опцию awk -v.