Использование SED с подстановочными знаками - PullRequest
22 голосов
/ 08 февраля 2012

Я хочу заменить строку на подстановочный знак, но она не работает.

Строка выглядит как "some-string-8"

Я написал

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

но на выходе получается

some-string-08

Ответы [ 2 ]

34 голосов
/ 08 февраля 2012

Звездочка (*) означает «ноль или более предыдущего элемента».

Если вы хотите сопоставить любой отдельный символ, используйте

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

Если вы хотите сопоставить любую строку (то есть любой отдельный символ ноль или более раз), используйте

sed -i 's/string-.*/string-0/g' file.txt
5 голосов
/ 08 февраля 2012

Итак, понятие «подстановочный знак» в регулярных выражениях работает немного по-другому. Чтобы соответствовать «любому символу», вы должны использовать «.» Модификатор "*" означает совпадение любое количество раз.

...