使用sed检测与模式匹配的两个连续行

Pal*_*han 2 sed

我正在寻找两个连续的匹配某个模式的行,比如用sed包含单词'pat',并注意到我有时能用这个命令检测到它:

sed -n 'N; /.*pat.*\n.*pat.*/p'
Run Code Online (Sandbox Code Playgroud)

但如果重复项的行号不是相同的奇偶校验,则此命令失败,我认为是因为我们正在搜索第1 + 2,3 + 4,5 + 6行等.如果是这种情况,那将是什么这样做的正确方法?

Jot*_*tne 8

为什么需要sed?我可以建议awk吗?

awk '{/pat/?f++:f=0} f==2' file
Run Code Online (Sandbox Code Playgroud)

如果pat找到,则增加f,1
如果pat未找到,则重置f0
如果f==2打印该行.