2つのパターン間のすべての正規表現一致を取得し、ファイルとして印刷します。

2つのパターン間のすべての正規表現一致を取得し、ファイルとして印刷します。

長い行がたくさんあるファイルがあります。 2つのパターン間のすべてのグループをインポートし、1行に1つずつ新しいファイルとして印刷したいと思います。 Pythonを使用してこれを実行できますが、コマンドラインツールのみを使用して実行することをお勧めします。シャットダウンモードがなければ、行の終わりまですべてをキャッチしたいと思います。

それは次のとおりです。

input: 
xxSTART relevanttext xxEND something else xxSTART even more relevant

output:
relevanttext
even more relevant

ベストアンサー1

GNU grepがオプションの場合-P(perl準拠の正規表現)フラグを渡し、フォワードアサーション、リバースアサーション、および非欲張りな一致を使用して必要なものを抽出できます。

echo 'xxSTART relevanttext xxEND something else xxSTART even more relevant'  |\
grep -oP '(?<=START).*?(?=xxEND|$)'
relevanttext
even more relevant

あるいは、Stephane Chazelasが提案したようにいたずら\K振り返る主張の代わりに

echo 'xxSTART relevanttext xxEND something else xxSTART even more relevant'  |\
grep -oP 'START\K.*?(?=xxEND|$)' 

おすすめ記事