Я хочу заменить строку шаблоном, но он не работает.используя SED с подстановочным знаком
строка выглядит как "какой-нить-8"
я написал
sed -i 's/string-*/string-0/g' file.txt
но выход
some-string-08
Я хочу заменить строку шаблоном, но он не работает.используя SED с подстановочным знаком
строка выглядит как "какой-нить-8"
я написал
sed -i 's/string-*/string-0/g' file.txt
но выход
some-string-08
Звездочка (*) означает «ноль или больше предыдущий пункт ".
Если вы хотите, чтобы соответствовать любому символу использовать
sed -i 's/string-./string-0/g' file.txt
Если вы хотите, чтобы соответствовать любой строке (т.е. любой одиночный символ ноль или более раз) использовать
sed -i 's/string-.*/string-0/g' file.txt
Таким образом, концепции «подстановочный знак» в регулярных выражениях работает несколько иначе. Чтобы соответствовать «любому персонажу», вы должны использовать «.». Модификатор «*» означает любое количество раз.
ну, может, мой вопрос был неполным ... твоя команда работает для этого фиена. Однако, если у меня есть 'some-string-8 -x -command acommand', результатом выполнения этой команды является' some-string-0'. после этого он удалит все символы. Я хочу 'some-string-0 -x -command acommand' – mahmood
ok первая команда - это то, что я хочу – mahmood
что делать, если вы хотите использовать подстановочный знак в заменяющей строке? Пример: замените 'AAA. * BBB' на 'CCC. * DDD' – user2561747