sed \{x,y\} の範囲は貪欲ですか?

sed \{x,y\} の範囲は貪欲ですか?

\{x,y\}たとえば、inがsedできるだけ多くの文字または少ない文字と一致しようとするかどうかを知りたいと思います。

また、誰かが次の予期しない動作を私に説明できますかsed

echo "baaab" | sed 's/a\{1,2\}//'
bab

echo "baaab" | sed 's/a\{0,2\}//'
baaab

最初の行ではsed欲があり、2行目では当然ではありませんが、理由はありますか?

私はGNU sedバージョン4.2.1を使用しています。

ベストアンサー1

a\{0,2\}行の先頭の空の文字列と一致します(実際には空の文字列ですがg指定されていません)。

$ echo "baaab" | sed 's/a\{0,2\}/y/' 
ybaaab

GNUはsed左から右に一致し、グローバル置換が指定されていないため、行の先頭のみが一致します。以下を使用した場合g

$ echo "baaab" | sed 's/a\{0,2\}/y/g'
ybyyby

先頭と末尾の空の文字列と残りの部分aaと一致しますa

おすすめ記事