Почему команда SED работает на сервере, а не на удаленном сервере? - PullRequest
0 голосов
/ 16 мая 2019

У меня есть команда sed, которая отлично работает при запуске сервера прямой формы.Но когда я пытался запустить его с другого сервера, мне показалось, что он не хочет получать все мои команды sed.

Сервер RED HAT.Я пытался напрямую с сервера мою команду, которая работает отлично, но с другого сервера через shh это не так.

Здесь моя команда с ssh:

ssh 'user@host' sudo -S -u webm sh -c "sed -i 's/^wrapper.java.additional.50=-agentpath:\"\/webmethods\/dynatrace/#wrapper.java.additional.50=-agentpath:\"\/webmethods\/dynatrace/g' /webmethods/eg_*/profiles/IS_default/configuration/custom_wrapper.conf"

Я ожидаю изменить файлсодержимое, но вместо этого у меня есть это сообщение: sed: -e выражение # 1, символ 54: неизвестная опция для `s '

В конце это будет в сценарии ksh.

Спасибо

1 Ответ

2 голосов
/ 16 мая 2019

Сами двойные кавычки интерпретируют \/ как /, вам нужно удвоить обратную косую черту, чтобы сохранить экранирование в двойных кавычках.

Если возможно, может быть проще отправить команду на стандартный ввод оболочки:

cat << EOF | ssh 'user@host' sudo -S -u webm sh
sed -i 's/^wrapper.java.additional.50=-agentpath:"\/webmethods\/dynatrace/#wrapper.java.additional.50=-agentpath:"\/webmethods\/dynatrace/g' /webmethods/eg_*/profiles/IS_default/configuration/custom_wrapper.conf
EOF

Кроме того, используйте разные разделители, чтобы избежать необходимости бежать.Вы можете использовать любой символ, которого нет в строках:

sed -i 's%^wrapper.java.additional.50=-agentpath:"/webmethods/dynatrace%#wrapper.java.additional.50=-agentpath:"/webmethods/dynatrace%g'

Также обратите внимание, что . соответствует любому символу, но вы, вероятно, не хотите совпадать со строками, такими как

wrapperAjavaBadditionalC50=-agentpath:"/webmethods/dynatrace

Используйте \. или [.], чтобы соответствовать буквальной точке.

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