他のパターンが一致するまで一致するパターンを印刷します。

他のパターンが一致するまで一致するパターンを印刷します。

パターンが一致した後、ファイル内の他のパタ​​ーンが複数回一致するまでテキストを印刷しようとしています。与えられたスクリプトを修正しようとしています。ここしかし、そうしませんでした。例えば。内容はfile1.txt

example text
more example
pattern1
important text
very important 
need this too
pattern2
i dont require this
junk text
more junk
pattern1
important text
very important 
need this too
pattern2
junk

期待される出力

pattern1
important text
very important 
need this too
pattern1
important text
very important 
need this too

誰かが修正を提案できますか?

ありがとうございます。

ベストアンサー1

パターン(境界を含む)間の行間の一致は、sedの標準範囲セレクタです。

sed -n -e '/pattern1/,/pattern2/p' example.txt

効率をどれほど重要にするか(ファイルのサイズ)に応じて、怠惰にして2番目のパスを使用してパターン2マーカーを削除できます。

cat example.txt \
| sed -n -e '/pattern1/,/pattern2/p' \
| sed    -e '/pattern2/d'

< example.txt | sed ... | sed ...(はい、これはパフォーマンスの低下よりも複数のパイプフィルタを接続する読みやすさを好むので、catの無駄な使用です。そしてこれがPOSIXコマンドであるのか、それともbashとzshに存在する拡張なのか、今は不明です。)

おすすめ記事