一対のパターンが最後に現れる間にテキストを印刷するには?

一対のパターンが最後に現れる間にテキストを印刷するには?

sedを使用して、2つのパターン間の最後の行を別のファイルに印刷しようとしています。たとえば、file1に次のものが含まれているとします。

StartPattern
1
2
3
EndPattern
4
5
StartPattern
6
7
8
EndPattern
9
10
StartPattern
11
12
13
EndPattern
14
15

私は出力が次のようになります:

11
12
13

sedを使用してこれを行うにはどうすればよいですか?

ベストアンサー1

シングルアップロセス:

awk '/StartPattern/{ f=1;r=""; next }f && /EndPattern/{f=0}
     f{ r=(r=="")? $0: r RS $0 }END{ print r }' file > output

output文書の内容:

11
12
13

選ぶ食べ物+アッ解決策:

tac file | awk '/StartPattern/{exit}/EndPattern/{f=1;next}f' | tac > output

おすすめ記事