【发布时间】:2015-02-12 23:11:05
【问题描述】:
我正在尝试查找/替换在整个目录树中分布的许多文件中找到的字符串。
我想我会使用 sed 来完成这项任务。
find /some/dir -name \*.php -exec sed -i "s/cybernetnews/cybernet/g" {} \;
这与示例字符串“cybernetnews”按预期工作,但是当我尝试查找/替换此字符串时,事情变得很奇怪:
preg_match($_SESSION['infos']['num'], $numeric_variable)
我想用常量INFOS_NUM 替换字符串$_SESSION['infos']['num']。
所以我认为这会起作用:
find /some/dir -name \*.php -exec sed -i "s/$_SESSION['infos']['num']/INFOS_NUM/g" {} \;
不走运,这是运行上述命令后测试 php 文件中显示的内容:
preg_match($_SESSION['INFOS_NUMfoINFOS_NUM][INFOS_NUMum'],
$INFOS_NUMmeric_variable)
我尝试转义单引号,但得到完全相同的结果。如果我转义括号,则不会进行任何更改。
sed 挂断了哪些角色,我该如何正确逃脱?
【问题讨论】: