Ответ 1
Более "awk-ish" способ написать smcameron ответ:
awk -v n=5 '1; NR % n == 0 {print ""}'
"1;" является условием, которое всегда истинно и будет инициировать действие по умолчанию, которое должно печатать текущую строку.
У меня есть входной файл, подобный этому:
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 строк?
Более "awk-ish" способ написать smcameron ответ:
awk -v n=5 '1; NR % n == 0 {print ""}'
"1;" является условием, которое всегда истинно и будет инициировать действие по умолчанию, которое должно печатать текущую строку.
awk '{ if ((NR % 5) == 0) printf("\n"); print; }'
для n == 5
, конечно. Замените, какова бы ни была ваша идея n
.
awk '{print; if (FNR % 5 == 0 ) printf "\n";}' your_file
Я думаю, что "print" должен быть до "printf", а FNR более точна для вашей задачи.
Больше 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
$ awk -v n=5 '$0=(!(NR%n))?"\n"$0:$0'
Если вы хотите изменить "n", установите параметр "n" на опцию awk -v.