我尝试使用sed
将'version' => '1.2.3',
替换为'version' => '1.2.4',
。
以下是我尝试的内容:
echo " 'version' => '1.2.3', " | sed -E 's/([\s]*[\"\']version[\"\'][\s]*=>[\s]*[\"\'])[-_a-zA-Z0-9\.]+([\"\'][,]?)/\11.2.4\2/'
这是我的shell告诉我的内容:
zsh: parse error near `)'
我在一些在线正则表达式测试人员上尝试了相同的正则表达式(减去替换部分),它似乎在那里工作。那么,当我将它与sed
一起使用时,为什么它不起作用?
答案 0 :(得分:2)
您不能用单引号反斜杠单引号。在zsh中,您可以使用''
将单引号放入单引号中,或使用更可移植的'\''
(在bash和zsh中都进行测试):
echo " 'version' => '1.2.3', " \
| sed -E 's/(\s*[\"'\'']version[\"'\'']\s*=>\s*[\"'\''])[-_a-zA-Z0-9\.]+([\"'\''],?)/\11.2.4\2/'
我还将[\s]
更改为\s
,将[,]
更改为,
,因为它们相同,但后者更简单。