删除和替换 .php 文件中的字符串

deleting and replacing string inside .php file

我在加载 php 文件然后用其他内容替换他的内容时遇到了一些问题。 我的代码看起来像这样

$pattern="*random text*"
$rep=" "
$where=`ls *.php`
find -f $where -name "*.php" -exec sed -i 's/$pattern/$rep/g' {} \;

这不会加载整行文本。 $pattern 可以加载多少个字符也有限制吗? 还有办法让这个 .sh 文件每 15 分钟执行一次吗?

我正在使用 mac osX。

谢谢!

语法$var="value"错误。你需要说 var="value".

如果您只想对匹配 *.php 的文件执行某些操作,您只是在一个目录中进行操作,因此无需使用 find。只需使用 for 循环:

pattern="*random text*"
rep=" "
for file in *.php
do
   sed -i "s/$pattern/$rep/g" "$file"
done

请参阅 sed "s/$var/.../g" 而不是 sed 's/$var/.../g' 的用法。双引号扩展了表达式中的变量;否则,您将寻找文字 $var.

请注意 sed -i 单独在 OS X 中不起作用,因此 you probably have to say sed -i ''.


替换示例:

给定一个文件:

$ cat a
hello
<?php eval(1234567890) regular php code ?>
bye

让我们删除 eval() 中的所有内容:

$ sed -r 's/(eval\()[^)]*/X/' a
hello
<?php eval(X) regular php code ?>
bye