Используя Sed, чтобы заменить строку другой строкой? - PullRequest
1 голос
/ 04 ноября 2011

Я пробовал это:

sed -i 's/'Twas/It certainly was/g' *.txt

любые предложения ??

Ответы [ 3 ]

2 голосов
/ 04 ноября 2011

Апостроф в 'Twas интерпретируется как закрывающая кавычка (оболочкой, а не как sed), а затем последующая одинарная кавычка после /g интерпретируется как открытая цитата, которая весело проглатывает весь путь до конца скрипта (или командной строки, и тогда вы получаете загадочный >, что означает, что оболочка думает, что это еще не все). Для этой ситуации

sed -i "s/'Twas/It certainly was/g" *.txt

должно работать; однако строки в двойных кавычках делают много вещей, которые обычно не нужны в программах sed. Если бы там были какие-либо метасимволы регулярных выражений, я бы сделал вместо этого

sed -i 's/'\''Twas/It certainly was/g' *.txt
1 голос
/ 08 июня 2016

Попробуйте использовать следующее

grep -rl "Старая строка" directoryPath |xargs sed -i '/ oldString / new String / g'

Пример:

grep -rl 10.113.1.115 matchdir |xargs sed -i 's / 10.113.1.115 / 10.113.1.65 / g'

1 голос
/ 04 ноября 2011

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

sed -i "s/'Twas/It certainly was/g" *.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...