Я хочу заменить строку подстановочным знаком, но она не работает.
Строка выглядит как "some-string-8"
Я написал
sed -i 's/string-*/string-0/g' file.txt
но выход
some-string-08
Ответ 1
Звездочка (*) означает "ноль или более предыдущего элемента".
Если вы хотите совместить любой символ, используйте
sed -i 's/string-./string-0/g' file.txt
Если вы хотите сопоставить любую строку (т.е. любой символ, ноль или более), используйте
sed -i 's/string-.*/string-0/g' file.txt
Ответ 2
Итак, понятие "подстановочные знаки" в регулярных выражениях работает несколько иначе. Чтобы соответствовать "любому персонажу", вы должны использовать ".". Модификатор "*" означает любое количество раз.