在许多PHP文件中,我已经像这样定义了变量$_PATHROOT
$_PATHROOT = '../../../../';
我想用define()
替换它:
define('_PATHROOT', '../../../../');
当然,值../../../../因文件而异。
是否可以使用linux sed命令行?
感谢。
答案 0 :(得分:1)
这绝对是可能的。
以下命令适用于任何脚本(它在测试文件中适用于我):
sed -ri "s/^[$]_PATHROOT = '(([.][.]\/)+)';$/define('_PATHROOT', '\1');/" FILEPATH
将FILEPATH替换为要编辑的文件的路径。
此命令假定您要更改的行正好是
$_PATHROOT = '../../';
除了可能有任何正数的“../”。白色空间的任何变化都会将其抛弃,因此如果文件因文件而异,则需要对其进行修改。
相信Kent使用[$]
而不是一堆反斜杠的想法$
在bash和sed中都有特殊意义。
答案 1 :(得分:0)
这个sed one-liner适用于给定的例子:
sed -r "s/^[$](\w+)(.*);/define('\1'\2);/;s/=/,/"
kent$ sed -r "s/^[$](\w+)(.*);/define('\1'\2);/;s/=/,/"<<<"\$_PATHROOT = '../../../../';"
define('_PATHROOT' , '../../../../');