sed linux заменить сложную ссылку

Мне нужно выполнить эту задачу ссылка из переменной:

InstallLocation=/opt/software/software.properties
ReplaceeVar=http://localhost:1234/ab/cd/{company}/{employee}/

sed -i "s/Change_This_Url/"${ReplaceeVar}"/g" "$InstallLocation"

При построении URL-адреса произойдет сбой, например:

sed: -e expression #1, char xx: unterminated `s' command
-1
задан 16 February 2021 в 18:39
1 ответ

Во-первых, я не знаю, для чего нужны все ваши цитаты. Просто заключите команду подстановки в кавычки.

В команде sed вы используете косую черту для разделения регулярного выражения и строки замены. ReplaceeVar также содержит много косых черт. В результате получается команда

sed -i "s/Change_This_Url/http://localhost:1234/ab/cd/{company}/{employee}//g" "$InstallLocation"

Вы понимаете, почему это не работает?

Решение состоит в том, чтобы использовать не косую черту, а другой символ для разделения регулярного выражения и заменяющей строки. На мой взгляд, знаки трубы даже красивее, чем косая черта:

sed -i "s|Change_This_Url|${ReplaceeVar}|g" "$InstallLocation"
1
ответ дан 24 April 2021 в 03:02

Теги

Похожие вопросы