長い行がたくさんあるファイルがあります。 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|$)'