bash - sed将字符串替换为单引号

标签 bash ssh sed escaping

我想使用bash脚本修改远程主机上存在的脚本。

我的bash脚本具有如下命令,可在远程主机上运行sed命令:

ssh user@domain.com "some_command"

我要用sed命令修改一个名为config.php的文件。

我想替换这样的字符串
'debug' => true

有了这个
'debug' => false

sed命令(不起作用)是这样的:
sed 's/'debug'->true/'debug'=>false/g' config.php > newconfig.php

正确使用sed命令是什么,如何使它正确转义ssh“”命令中的所有字符?

最佳答案

尝试这样做:

$ sed -r "s@('debug'\s*=>\s*).*@\1false@" file
'debug' => false

因此:
ssh user@host<<'EOF'
sed -i -r "s@('debug'\s*=>\s*).*@\1false@" /PATH/TO/config.php
EOF

关于bash - sed将字符串替换为单引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27391297/

相关文章:

c# - 如何从文件中删除\n 字符?

bash - 如何将嵌入在 bash/shell 脚本中的长 sed 命令跨多行包装?

bash - awk - 将字符串从文件保存到变量

bash - 覆盖 git clone 的 bash 补全

amazon-web-services - 如何连接到 AWS 中的 EC2 实例?

BASH 通过 AWK 添加 ServerName 到 Apache.conf

python - 如何从 python 文件中执行 bash?

bash - 如何在 Bash 中构造变量名?

ssh - 如何使用 ssh 客户端从 putty 下载文件夹

mysql - 将 MySQLdump 自动化到本地计算机 (Windows)