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