Sed参数被反斜杠替换

时间:2015-06-08 16:29:39

标签: regex sed

我想运行搜索和替换,我正在尝试以下命令:

sed -i "s/\$enviro ?=.*[^;]/ = 1;/g" constants.php

出于某种原因,当我尝试运行时,它变为:

sed -i "s/\$enviro\ \?=.\*\[\^\;\]/\ =\ 1\;/g\" constants.php

这会产生错误:

sed: -e expression #1, char 28: unknown option to `s'

我只是想运行正则表达式\$enviro ?=.*[!;]并将其替换为$enviro = 1;

输入 - 一个大型配置文件,其中一行是:

       $enviro = 0;

输出 - 仍然很大的配置文件:

$enviro = 1;

2 个答案:

答案 0 :(得分:1)

你可以试试这个gnu sed

sed -i -r 's/(\$enviro *= *)[^;]*/\1 1/' file

答案 1 :(得分:1)

您可以使用此sed命令:

sed -i.bak 's/\(\$enviro *=\).*/\1 1;/' constants.php