您好,我尝试自动化,例如更改 php 文件中的一个变量。
root /tmp # cat defaults.inc.php|egrep "reply_all_mode"
$config['reply_all_mode'] = 0;
我尝试首先通过类似这样的 grep 来捕获此问题:
root /tmp # cat defaults.inc.php|grep '$config['reply_all_mode'] = 0;'
但我没有检索到任何结果...
我尝试使用 sed 或 perl 来$config['reply_all_mode'] = 0;
完成更改。$config['reply_all_mode'] = 1 ;
如何用这种字符做到这一点?
答案1
所有这些字符对于正则表达式来说都是特殊的:$
,,[
都]
需要转义。
我会写
sed 's/\(\$config\['\''reply_all_mode'\''\] = \)0;/\11;/' file
最多用=
括号括起来,\1
替换部分中的 复制该文本。然后0;
替换为1;
混乱'\''
是因为 shell 的单引号字符串不能包含单引号字符串。我们必须跳出单引号字符串来添加文字单引号。我们不必使用单引号,但在我看来,这样更糟糕:
sed "s/\\(\\\$config\\['reply_all_mode'\\] = \\)0;/\\11;/" file
使用 perl 进行整理
perl -pe 's/\$config\['\'reply_all_mode'\''\] = \K0;/1;/' file