Подтвердить что ты не робот

Использование SED с подстановочными знаками

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

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

Я написал

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

но выход

some-string-08
4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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