Bash sed用一个引号替换字符串
我想使用bash脚本修改远程主机上存在的脚本 我的bash脚本有这样一个命令,用于在远程主机上运行sed命令:Bash sed用一个引号替换字符串,bash,ssh,sed,escaping,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 &
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
因此:
sshuser@host我只是在我的服务器上做了一个小测试,这似乎是可行的。您可以尝试在sed命令中使用双引号,但可以将其转义
ssh user@domain.com "sed \"s/'debug' => true/'debug' => false/g\" /path/to/config.php > /path/to/newconfig.php"
ssh user@domain.com "sed \"s/'debug' => true/'debug' => false/g\" /path/to/config.php > /path/to/newconfig.php"