egrepを使用して文字列を取得する方法

egrepを使用して文字列を取得する方法

[RT]"anything"Dのある文字列を検索したいです。言い換えれば、最初の文字はRまたはTになり、次の文字はDが表示されるまで任意の文字にすることができます。 「egrep」を使うべきですか?

ベストアンサー1

GNU grepおよびPCRE(Perl-Compatible Regular Expressions)サポートがある場合(有効にして-P)、次のことができます。

grep -o -P 'RT.*?D' file

私たちはPCREが欲しいです。怠惰な数量子()単独で使用する代わりに?一緒に使用できます。後者は貪欲で、すべてを飲み込むでしょう。.*.*最後 D...

$ grep -o 'RT.*D' <<< "JKIRTTHIUCDELKJUCDE"
RTTHIUCDELKJUCD
$ grep -o -P 'RT.*?D' <<< "JKIABTHIUCDELKJUCDE"
RTTHIUCD

ああ、そしてこの-oフラグは、grep行全体を印刷するデフォルトの動作ではなく、行の一致する部分だけを印刷するように指示します。

D注:これには1つの重要な違いがありますが、閉じた重複質問でマージされました。ここで、パターンの最後の部分は単一文字ではなく複数文字です。単一文字の場合はPCREなしで処理できますが(ここでは他の回答を参照)、複数文字の場合はBREまたはERE構文では使用できない機能が必要です。

おすすめ記事