awk在行之间做数学

时间:2015-04-13 19:10:00

标签: bash awk

我想在$ 1不同的行之间放一个空行>然后1。

代码示例:

104 9  
110 8
111 5
116 6
117 7
130 11
131 16
132 15
133 10
134 6
146 8
147 8
148 8
尝试是:

awk '{a=$1; b=$2; getline; c=$1; d=$2; if (c-a>1) print a"\t"b"\n"c"\t"d;else print "\n"}' file

但结果好坏参半:

110     8
111     5
116     6
117     7
130     11
131     16
132     15
133     10

147     8
148     8

我失踪了什么?

1 个答案:

答案 0 :(得分:4)

这个awk应该可以工作:

awk 'NR>1 && $1>p+1{print ""} {p=$1} 1' file
104 9

110 8
111 5

116 6
117 7

130 11
131 16
132 15
133 10
134 6

146 8
147 8
148 8