如何使用awk每n行插入一个空行?

时间:2009-06-10 18:34:23

标签: awk blank-line

我有一个像这样的输入文件:

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行在我的文件中加一个空行?

5 个答案:

答案 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'。