为什么 SED 命令在服务器上有效,但在远程服务器上无效?
Why SED command works on server but not with remote server?
我有一个 sed 命令,当我 运行 它指向表单服务器时,它可以完美地工作。但是当我尝试从另一台服务器 运行 它时,它似乎不想获取我所有的 sed 命令。
服务器红帽。我直接从服务器尝试了我的命令,它运行良好,但从另一台服务器通过 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 脚本中。
谢谢
双引号本身将 \/
解释为 /
,您需要双反斜杠以保留双引号中的转义。
如果可能,将命令发送到 shell 的标准输入可能更容易:
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
使用 \.
或 [.]
匹配文字点。
我有一个 sed 命令,当我 运行 它指向表单服务器时,它可以完美地工作。但是当我尝试从另一台服务器 运行 它时,它似乎不想获取我所有的 sed 命令。
服务器红帽。我直接从服务器尝试了我的命令,它运行良好,但从另一台服务器通过 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 脚本中。
谢谢
双引号本身将 \/
解释为 /
,您需要双反斜杠以保留双引号中的转义。
如果可能,将命令发送到 shell 的标准输入可能更容易:
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
使用 \.
或 [.]
匹配文字点。