Команда sed для замены строки символами / - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь заменить name=src. на name=Web/ в моем XML-файле с помощью команды sed:

sed -i 's/name=src\./name=WebUi\//g' coverage.xml

, но выдает ошибку.

Может кто-нибудь пожалуйстапредставить идею по команде sed?

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Когда / появляется как часть текста, будь то в регулярном выражении или замене, используйте символ, отличный от / в обозначении s/// (я выбрал |, но вы можете использовать любой символ, который нене появляются в регулярном выражении или замене; управляющий символ, такой как Control-A , часто может быть эффективным и безопасным):

sed command sed -i 's|name=src\.|name=WebUi/|g' coverage.xml

Обратите внимание, что опция -i написана таким образомработает только с GNU sed;с BSD или macOS sed вам потребуется -i ''.Использование -i.bak одинаково работает с обоими, но оставляет файл резервной копии, который должен быть удален.

Меня всегда беспокоит, когда я вижу, что люди с испорченными сценариями sed делают изменения на месте.Вам не следует думать об использовании опции -i, пока вы не уверены, что скрипт работает.


При рассмотрении я удивляюсь, что оригинальный 's/name=src\./name=WebUi\//g' не работал - обратная косая чертадо того, как слеш должен был быть правильным.

0 голосов
/ 28 февраля 2019

Использование:

sed 's/name=src/name=Web/g' filename.txt
...