使用awk根据字段中的值差分离行块

使用awk根据字段中的值差分离行块,awk,Awk,我有一个如下的输入(选项卡分隔): 。。。并希望它看起来像这样:将第二个字段中的跳转小于前一行中等效值300的行放在一起,并将得到的块与跳转大于300的块分开: 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脚本,但效果不好,因为

我有一个如下的输入(选项卡分隔):

。。。并希望它看起来像这样:将第二个字段中的跳转小于前一行中等效值300的行放在一起,并将得到的块与跳转大于300的块分开:

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"
}
{
p=0美元;coord=2美元;getline;

如果($2-coord
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

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

如果跳转等于300?不要使用
getline
进行类似操作。阅读Arnold Robbins的第四版《有效的Awk编程》一书。可以很容易地将jas在karafka的回答中指出的细节结合起来。谢谢。如果跳转等于300?不要使用
getline
进行类似操作。阅读《有效的Awk》一书编程,第四版,由阿诺德·罗宾斯编写。将很容易地将jas在卡拉夫卡的回答中提到的细节合并在一起。谢谢。