我有一个包含文件:
$conf['minified_version'] = 100;
我想增加与100 SED,所以我有这样的:
sed -r 's/(.*minified_version.*)([0-9]+)(.*)/echo "\1$((\2+1))\3"/ge'
的问题是这将从原始中删除$conf
以及任何缩进间距。我已经能够搞清楚的是,这是因为它试图运行:
echo " $conf['minified_version'] = $((100+1));"
所以当然它试图与它有没有价值的变量来代替$conf
。
这里的问题与源代码中的'$'没有任何关系 - 你已经编写了你的正则表达式,使得不包含任何文字'$',所以你避免了显而易见的错误在表达式的开始处放置一个线端锚点(一个可以通过'^ [$]'开始避免的陷阱)。相反,它试图让'sed'评估一个shell命令来生成替代内容,它不支持并且从不做。 –