在文件匹配条件中搜索 3+ 连续行

mde*_*705 2 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    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 的新手)之外,它还会打印每一行而不是我正在寻找的汇总输出。任何帮助表示赞赏!

Ed *_*ton 5

$ 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)