我有一个像这样的输入文件:
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行在我的文件中加一个空行?
答案 0 :(得分:23)
写一个更为“awk-ish”的方法来写smcameron的答案:
awk -v n=5 '1; NR % n == 0 {print ""}'
“1;”是一个始终为真的条件,并将触发默认操作,即打印当前行。
答案 1 :(得分:18)
awk '{ if ((NR % 5) == 0) printf("\n"); print; }'
当然,代表n == 5
。替换你对n
的想法。
答案 2 :(得分:3)
awk '{print; if (FNR % 5 == 0 ) printf "\n";}' your_file
我猜'print'应该在'printf'之前,FNR对你的任务来说更准确。
答案 3 :(得分:3)
更加笨拙:
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
答案 4 :(得分:1)
$ awk -v n=5 '$0=(!(NR%n))?"\n"$0:$0'
如果你想改变'n',请用awk的-v选项设置参数'n'。