简体   繁体   English

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

[英]Print the lines between two lines that has the same pattern using bash

I have a text file containing with string pattern 'OG' -我有一个包含字符串模式 'OG' 的文本文件 -

OG
ANNNFKSODJFHFJ
SSJSJKSKJSAJAS
SSSSSSSSSSSSFA
OG
FALJFNAFAFNAFJL
AFJLJSLJFLFSLFL
ASJFAJFAKFKAFKK
OG
AJSFLJASFLSFLFF
SJFLAFLAFLFLAFA
ASASFASFOFLJAJF

I want to print the lines between the first two lines that has 'OG' as string pattern, ie The result should be -我想打印前两行之间以 'OG' 作为字符串模式的行,即结果应该是 -

ANNNFKSODJFHFJ
SSJSJKSKJSAJAS
SSSSSSSSSSSSFA

Here, any suggestions using 'sed' or 'awk'.在这里,任何使用“sed”或“awk”的建议。 I don't want to use printing by line number but rather with pattern search.我不想使用按行号打印,而是使用模式搜索。

I tried using awk, but not working -我尝试使用 awk,但没有用 -

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

You're almost there:你快到了:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM