web-dev-qa-db-ja.com

ワイルドカードを使用したSEDの使用

文字列をワイルドカードに置き換えたいのですが、機能しません。

文字列は「some-string-8」のようになります

私が書いた

sed -i 's/string-*/string-0/g' file.txt

しかし、出力は

some-string-08
24
mahmood

アスタリスク(*)は、「前の項目のゼロ以上」を意味します。

単一の文字の使用に一致させたい場合

sed -i 's/string-./string-0/g' file.txt

任意の文字列(つまり、1文字を0回以上)に一致させたい場合は、

sed -i 's/string-.*/string-0/g' file.txt
36
tom

したがって、正規表現の「ワイルドカード」の概念は少し異なります。 「任意の文字」に一致させるには、「。」を使用します。 「*」修飾子は、何回でも一致することを意味します。

5