我正在尝试用sed替换字符串。不幸的是,字符串包含单引号和" ::"符号。因此我使用sed遇到了一些麻烦。
我需要将configuration::set('feature', '0')
更改为configuration::set('feature', '1')
。
我尝试了什么:
sed 's%configuration::set('feature', '0')%configuration::set('feature', '1')%g' file.cf
答案 0 :(得分:1)
这只是一个报价问题。用双引号括起你的sed命令(如果没有任何bash可以扩展)或者转义里面的所有单引号。
sed 's/configuration::set('"'"'feature'"'"', '"'"'0'"'"')/configuration::set('"'"'feature'"'"', '"'"'1'"'"')/g'
答案 1 :(得分:1)
在整个事物周围使用双引号,以便'
不会结束命令字符串并使用捕获组来避免重复:
sed "s%\\(configuration::set('feature', '\\)0'%\\11'%g" file.cf
根据评论(谢谢),我已将结束报价添加到匹配和替换中,以使其更加强大。由于字符数量太少,我选择反对我自己的建议。