正規表現検索パターンを適用するためにgrepを使用してファイルを1行に処理する方法は?

正規表現検索パターンを適用するためにgrepを使用してファイルを1行に処理する方法は?

特定の行間のすべての項目を一致させるために正規表現を使用したいのですが、開始と終了は一致しません。私にとって、それは肯定的な振り返りと肯定的な見通しのように聞こえます。

    start text
    bla bla 
    bla
    end

これらのブロックは複数あるので、すべて抽出し、各ブロックに対して異なる正規表現に基づいて何かを抽出したいと思います。したがって、次のようにする必要があります。

match start 
then match everything until the first occurrence of end
match start 
then match everything until the first occurrence of end

など...

だから私は次のようにしました:(?<=start)。*(?=end)

ファイルを一連の行として扱い、各行に正規表現を適用しようとするコマンドラインgrepを使用すると考えたため、これは機能しません。ファイルを完全な行として処理する方法はありますか?それともこれは良い解決策ではなく、sedを使用してテキストを抽出し、接続を含む行でファイルを作成するなど、さまざまなコマンドラインツールの組み合わせを使用する必要があります。初期文書の行?

ベストアンサー1

a'rが私よりも先にsedソリューションを見つけたので、それに対応するperlソリューションを公開します。

perl -ne 'print if/start/../end/'

ちょっと長いですが。

おすすめ記事