2つのパターン間のすべてのテキスト(パターンが表示される行のテキストを含む)をどのように抽出しますか?

2つのパターン間のすべてのテキスト(パターンが表示される行のテキストを含む)をどのように抽出しますか?

Bashコンテキストから抽出したいです。すべてのテキスト異なる行にあるが全体を構成しない2つのパターン間で発生します。だから、特別にパターンが現れる行にテキストを印刷したいのですが、スタートパターンの後ろから始めて、ストップパターンの前で終わるようにします。

  • たとえば、入力が次のような場合:
    This is line 1
    Something else
    Line 3
    
  • Thisそしてパターンは3
  • その後、希望の出力は次のようになります。
    is line 1
    Something else
    Line
    

ベストアンサー1

grepGNU、Lookbehind (?<=This )、およびLookaheadを使用する(?= 3)

grep -Poz '(?<=This )(.|\n)*(?= 3)' file

出力:

1号線です。
その他
ワイヤー

参照:man grepスタックオーバーフロー正規表現に関するよくある質問

おすすめ記事