使用 bash 打印具有相同模式的两行之间的行

Print the lines between two lines that has the same pattern using bash

我有一个包含字符串模式 'OG' -

的文本文件
OG
ANNNFKSODJFHFJ
SSJSJKSKJSAJAS
SSSSSSSSSSSSFA
OG
FALJFNAFAFNAFJL
AFJLJSLJFLFSLFL
ASJFAJFAKFKAFKK
OG
AJSFLJASFLSFLFF
SJFLAFLAFLFLAFA
ASASFASFOFLJAJF

我想打印具有 'OG' 作为字符串模式的前两行之间的行,即结果应该是 -

ANNNFKSODJFHFJ
SSJSJKSKJSAJAS
SSSSSSSSSSSSFA

在这里,任何使用 'sed' 或 'awk' 的建议。我不想使用按行号打印,而是使用模式搜索。

我尝试使用 awk,但没有用 -

awk '/^OG/{flag=1;next}/^OG/{flag=0}flag' file.txt

你快完成了:

$ awk '/^OG/ {if(go) exit; go=1; next} go {print}' file.txt
ANNNFKSODJFHFJ
SSJSJKSKJSAJAS
SSSSSSSSSSSSFA