我有一个这样的输入文件:
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 行在我的文件中放入一个空行?
我有一个这样的输入文件:
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 '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 '{print; if (FNR % 5 == 0 ) printf "\n";}' your_file
我猜 'print' 应该在 'printf' 之前,而 FNR 更适合您的任务。
$ awk -v n=5 '$0=(!(NR%n))?"\n"$0:$0'
如果要更改'n',请通过awk 的-v 选项设置参数'n'。