我在加载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。
谢谢!
答案 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