Найти и заменить на Redhat Linux с помощью «sed» - PullRequest
1 голос
/ 01 ноября 2011

Я провел несколько поисков по этому вопросу, и хотя решения кажутся очевидными, я не могу найти какой-то определенный для моей конкретной ситуации.У меня есть файл, который содержит строку "$ {string}", и я хотел бы заменить ее другой строкой, которая является путем к файлу "/tmp/myfilepath".

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

sed -i 's/"${string}"/"/tmp/myfilepath"/g' myFile.txt

Я получаю сообщение об ошибке ...

sed: -e expression #1, char 5: unknown option to `s'

Я использую двойные кавычки, потому что в нем есть дополнительные косые черты.Я пробовал смешивать одинарные и двойные кавычки, но ничего не получается.Есть мысли или решения?Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 01 ноября 2011

Вы должны избежать обратной косой черты в строке замещения:

sed -i 's/"${string}"/"\/tmp\/myfilepath"/g' myFile.txt

Или используйте другую команду-разделитель, например двоеточие:

sed -i 's:"${string}":"/tmp/myfilepath":g' myFile.txt
1 голос
/ 01 ноября 2011

Используйте другой разделитель:

sed -i "s|${string}|/tmp/myfilepath|g" myFile.txt

Если строка может содержать специальные символы, сначала исправьте ее .

...