Выполнение команды Sed - PullRequest
3 голосов
/ 01 марта 2012

Когда я запускаю команду

sed -e "s/$1/@root@The-Three-Little-Pigs-Siri-Proxy/" -i gen_certs.sh

Получаю следующую ошибку.Я пытаюсь заменить текст $ 1 на другой, приведенный ниже в том же файле, не создавая новый, просто изменяя текущий.

sed: -e expression #1, char 0: no previous regular expression

Любые идеи о том, что может быть причиной ошибки и как ее исправить?

ОС: Ubuntu 10.10 32 бит

Ответы [ 2 ]

3 голосов
/ 01 марта 2012

$1 расширится до нулевой строки (''), если в строке будет двойная кавычка.
Вы можете использовать одинарную кавычку, чтобы сохранить буквальное значение $1:

sed -e 's/$1/@root@The-Three-Little-Pigs-Siri-Proxy/' -i gen_certs.sh
1 голос
/ 01 марта 2012

Вам необходимо экранировать шаблон: sed -e "s/\$1/@root@The-Three-Little-Pigs-Siri-Proxy/" -i gen_certs.sh, поскольку $1 обозначает обратную ссылку в sed (при условии, что вы хотите заменить строку $1 во вводе, верно?)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...