Awk 搜索3+;文件中的连续行匹配条件
我想搜索一个文件,查找符合给定条件的>=3个连续行的每个实例。我想为每个连续匹配块打印第一个匹配行的第1列和第2列,以及最后一个匹配行的第3列 例如,假设我在第4列中查找大于500的多行。以下是我想要的: 示例文件Awk 搜索3+;文件中的连续行匹配条件,awk,grep,Awk,Grep,我想搜索一个文件,查找符合给定条件的>=3个连续行的每个实例。我想为每个连续匹配块打印第一个匹配行的第1列和第2列,以及最后一个匹配行的第3列 例如,假设我在第4列中查找大于500的多行。以下是我想要的: 示例文件 Sc000000 2400 3600 602 Sc000000 3600 4800 835 Sc000000 4800 6000 718 Sc000000 6000 7200 416 Sc000000 72
Sc000000 2400 3600 602
Sc000000 3600 4800 835
Sc000000 4800 6000 718
Sc000000 6000 7200 416
Sc000000 7200 8400 602
Sc000000 8400 9600 615
Sc000000 9600 10800 125
Sc000000 10800 12000 875
Sc000000 12000 13200 753
Sc000000 13200 14400 567
结果文件
Sc000000 2400 6000
Sc000000 10800 14400
我试过awk'/{$4>=500}/{f++;if(f>=3)print;last=$0;next}{f=0}file.txt
,但除了语法错误(我是awk新手)之外,它还会打印每一行,而不是我正在寻找的汇总输出。感谢您的帮助 $cat tst.awk
$ cat tst.awk
$4 <= 500 { prt(); next }
!cnt++ { beg = $1 OFS $2 }
{ end = $3 }
END { prt() }
function prt() {
if ( cnt > 2 ) {
print beg, end
}
cnt = 0
}
$ awk -f tst.awk file
Sc000000 2400 6000
Sc000000 10800 14400
$4 2 ) {
打印,结束
}
cnt=0
}
$awk-f tst.awk文件
SC00000024006000
Sc000000 10800 14400
谢谢,这非常有效。非常感谢:)