我想为与给定条件匹配的 >=3 个连续行的每个实例搜索一个文件。我想从第一个匹配的行中打印出列 #1 和 #2,并从每个连续匹配块的最后一个匹配行中打印出列 #3。
例如,假设我在第 4 列中查找大于 500 的多行。这就是我要查找的内容:
示例文件
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
Run Code Online (Sandbox Code Playgroud)
结果文件
Sc000000 2400 6000
Sc000000 10800 14400
Run Code Online (Sandbox Code Playgroud)
我已经尝试过,awk '/{$4 >= 500}/{f++; if (f>=3) print; last=$0; next} {f=0}' file.txt但除了我的语法错误(我是 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
Run Code Online (Sandbox Code Playgroud)