19 awk blank-line
我有一个像这样的输入文件:
line 1
line 2
line 3
line 4
line 5
line 6
Run Code Online (Sandbox Code Playgroud)
我想用awk每几行插一个空白行; 例如,每两个:
line 1
line 2
line 3
line 4
line 5
line 6
Run Code Online (Sandbox Code Playgroud)
我怎么能得到awk每n行给我的文件写一个空行?
gle*_*man 24
写一个更为"awk-ish"的方式来写smcameron的答案:
awk -v n=5 '1; NR % n == 0 {print ""}'
Run Code Online (Sandbox Code Playgroud)
"1;" 是一个始终为true的条件,并将触发默认操作,即打印当前行.
smc*_*ron 18
awk '{ if ((NR % 5) == 0) printf("\n"); print; }'
Run Code Online (Sandbox Code Playgroud)
因为n == 5,当然.替换你的想法n.
更尴尬:
awk 'ORS=NR%5?RS:RS RS'
Run Code Online (Sandbox Code Playgroud)
例如:
$ printf "%s\n" {1..12} | awk 'ORS=NR%5?RS:RS RS'
1
2
3
4
5
6
7
8
9
10
11
12
Run Code Online (Sandbox Code Playgroud)
小智 5
awk '{print; if (FNR % 5 == 0 ) printf "\n";}' your_file
Run Code Online (Sandbox Code Playgroud)
我猜'print'应该在'printf'之前,并且FNR对您的任务更准确。