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

时间:2015-07-27 15:45:39

标签: regex macos shell sed sh

我在加载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。

谢谢!

1 个答案:

答案 0 :(得分:1)

语法$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\()[^)]*/\1X/' a
hello
<?php eval(X) regular php code ?>
bye