【问题标题】:Problems running a complicated sed command over SSH通过 SSH 运行复杂的 sed 命令时出现问题
【发布时间】:2015-12-13 15:43:09
【问题描述】:

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

我刚收到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":"pack/"libraries"","objectsLocation":"pack/"objects"",

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

【问题讨论】:

  • 有时这很简单:scp script server:script; ssh server 'bash script'

标签: json linux bash ssh sed


【解决方案1】:

你可以使用:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-08
    • 1970-01-01
    • 2020-05-10
    • 2018-03-21
    • 2020-09-04
    • 1970-01-01
    • 2016-07-25
    • 1970-01-01
    相关资源
    最近更新 更多