2015-09-16 75 views
1

我已经阅读了关于该主题的多个其他答案,但没有一个对我的问题似乎无效。通过SSH运行一个复杂的sed命令的问题

我刚刚得到了an answer to my other question关于如何在长的单行.json文件中为2个文本字符串添加前缀。

的命令是

sed -i 's~"libraries"~"pack/\0"~; s~"objects"~"pack/\0"~' /var/www/html/pack/file.json 

,它包含单引号和双引号,以及前向和双斜线,使其他的答案失败。

我已经试过

ssh ip<<'EOF' 
sed -i 's~"libraries"~"pack/\0"~; s~"objects"~"pack/\0"~' /var/www/html/pack/file.json 
EOF 

ssh ip 'sed -i '"'"'s~"libraries"~"pack/\0"~; s~"objects"~"pack/\0"~'"'"' /var/www/html/pack/file.json' 

everything on this page,以及可能的回答了几个其他的东西在这里,没有运气。

第一个命令,与EOF,打开我将得到时,只需ssh ip -ing;一个远程命令提示符。来自Zaiste.net页面的其他一些命令也是如此。

请注意,sed命令正在终端中执行的脚本运行。因此,多行答案是可以的。

此外,

ssh ip 'sed -i '"'"'s~"libraries"~"pack/\0"~; s~"objects"~"pack/\0"~'"'"' /var/www/html/pack/file.json' 

回报围绕 “对象” EXTRA引号和 “库” 的字符串我试图前缀,例如

“minimumVersion”:2, “librariesLocation”: “包/ ”库“”, “objectsLocation”: “包/ ”对象“”,

如果从THI额外的报价问题s命令可以解决,这是我的问题的解决方案。

+0

有时候,这是简单的:'SCP脚本服务器:脚本; ssh服务器'bash脚本' –

回答

0

您可以使用:

ssh -t -t ip<<'EOF' 
sed -i 's~"libraries"~"pack/&"~; s~"objects"~"pack/&"~' /var/www/html/pack/file.json 
exit 
EOF