複数のファイルがあり、st
2つのタグとet
。
を使用すると、grep "st.*et" files
結果に両方のタグが含まれます。
たとえばst Hello world! et
。ところで、この部分
だけが必要です。Hello world!
タグ間の内容のみを表示するためにgrep(または他の正規表現ツール)を使用する方法はありますか?
PS:私は私の目標を達成するためにこれらの結果をさらに処理するためにAWK
などのツールを使用する方法を知っています。python
しかし、これを行うより直接的な方法があるかどうか疑問に思います。
ベストアンサー1
grep
最新のPCREサポートでGNUを使用する:
echo 'st Hello world! et' | grep -oP "st\K.*?(?=et)"
ここで重要なのは、長さゼロのLookaheadとLookBehindアサーションを使用することです。
\K ==> Look-behind assertion
(?=et) ==> Look-ahead assertion
詳細については、次を参照してください。ここ。