我正在尝试替换字符串
: 'development'
和
: 'production'
使用sed
。
我尝试了一些选项,包括:
sed -i "s|: \'development\'|: \'staging\'|g" index.php
但没有任何运气。输出:
sed: 1: "index.php": command i expects \ followed by text
有人可以帮忙吗?
答案1
您不需要在双引号内转义单引号,请参阅我的这个答案:
将字符括在双引号中会保留引号内所有字符的文字值,但启用历史记录扩展时的
$
、`
、和除外。\
!
因此,这些工作:
sed -i "s/: 'development'/: 'staging'/g" index.php
sed -i "s|: 'development'|: 'staging'|g" index.php
sed -i 's|: '\''development'\''|: '\''staging'\''|g' index.php
答案2
我建议:
sed "s/: 'development'/: 'production'/" index.php`
答案3
我设法解决了这个问题。结果在 Mac 机器上我必须使用 -i 来为 .bak 加后缀。但在 Linux 上,没有它也可以正常工作。我首先在本地机器上尝试查看输出,但失败了。
感谢大家的帮助。