0

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

20

Проблема с заменой строки с использованием подстановочных знаков в sed

Я пытаюсь заменить строку с использованием подстановочного знака, но это не работает так, как я ожидал.

Моя строка выглядит следующим образом: "some-string-8"

Я написал следующую команду:

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

Однако вывод оказывается таким:

some-string-08

Как мне правильно заменить строку, чтобы результатом была "some-string-0"?

2 ответ(ов)

0

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

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

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

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

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

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

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь