我正在尝试用文件中的sed替换这两行中的下一行。
<rule>out_prefix=orderid ^1\\d\+ updatemtnotif/</rule>\n\
<rule>out_prefix=orderid ^2\\d\+ updatemtnotif/</rule>\n\
以下命令似乎在bash提示符下作为命令执行时执行此操作
sed -i 's@out_prefix=orderid ^2\\\\d\\+ updatemtnotif/@out_prefix=orderid ^2\\\\d\\+ updatemtnotif_fr/@g' /opt/temp/rules.txt
但是,当我尝试使用此文档通过ssh远程执行相同的命令时,该命令无法修改该文件。 我认为这可能是一个逃避问题,但我没有运气试图以多种方式修改命令。任何人都可以告诉我应该怎么做才能让它在ssh上工作?提前谢谢!
澄清,
input: <rule>out_prefix=orderid ^2\\d\+ updatemtnotif/</rule>\n\
output: <rule>out_prefix=orderid ^2\\d\+ updatemtnotif_fr/</rule>\n\
答案 0 :(得分:1)
您可以将其与ssh
和heredoc一起使用,如下所示:
ssh -t -t user@localhost<<'EOF'
sed 's~out_prefix=orderid ^2\\\\d\\+ updatemtnotif/~out_prefix=orderid ^2\\\\d\\+ updatemtnotif_fr/~' ~/path/to/file
exit
EOF
PS:如图所示,引用 'EOF'
非常重要。
答案 1 :(得分:0)
我设法解决了这个问题。我必须在shell脚本中使用的命令中转义反斜杠。
's@out_prefix=orderid ^2\\\\\\\\d\\\\+ updatemtnotif/@out_prefix=orderid ^2\\\\\\\\d\\\\+ updatemtnotif_fr/@g' /opt/temp/rules.txt
这有很多反斜杠,但它确实可以解决问题。