我的输入看起来像这样(以制表符分隔):
line0 450
line1 500
line2 550
line3 600
line4 650
line5 1000
line6 1100
line7 1500
line8 1550
line9 1600
line10 1650
...并且希望它看起来像这样:将第二个字段中的跳跃小于300的行与前一行中的等效值保持在一起,并将结果块与跳转超过300的块分开:< / p>
line0 450
line1 500
line2 550
line3 600
line4 650
XXXX
line5 1000
line6 1100
XXXX
line7 1500
line8 1550
line9 1600
line10 1650
我试过的awk脚本但是效果不好,因为它在连续的对中占用了行并且没有测试每个输入行的条件以及下一个:
{
p=$0; coord=$2; getline;
if ($2 - coord <= 300)
print p"\n"$0
else
print p"\nXXXX"
}
答案 0 :(得分:2)
awk
救援!
$ awk 'NR>1 && $2-p>300{print "XXXXX"} {p=$2}1' file
line0 450
line1 500
line2 550
line3 600
line4 650
XXXXX
line5 1000
line6 1100
XXXXX
line7 1500
line8 1550
line9 1600
line10 1650