通过SSH运行复杂的sed命令时出现问题

时间:2015-09-16 21:25:51

标签: json linux bash ssh sed

我已经阅读了有关该主题的多个其他答案,但似乎没有一个能解决我的问题。

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

命令是

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时获得的相同屏幕;远程命令提示符。来自Zaiste.net页面的其他一些命令也是如此。

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

此外,

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

围绕&#34;对象&#34;返回 EXTRA 引号和&#34;图书馆&#34;字符串我试图添加前缀,例如

&#34; minimumVersion&#34;:2&#34; librariesLocation&#34;:&#34;包/的&#34;文库&#34; &#34;,& #34; objectsLocation&#34;:&#34;包/的&#34;对象&#34; &#34;,

如果可以解决此命令的额外引号问题,那就解决了我的问题。

1 个答案:

答案 0 :(得分:0)

您可以使用:

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