sed和PHP标签

时间:2015-06-15 09:10:53

标签: regex linux sed

我在使用SED时遇到了问题。

我在第一行有一个php文件,这个结构:

<?php echo 'first' ?><?php echo 'second' ?><?php echo 'third';?>

我试图删除前两个语句,结果是:

<?php echo 'third';?>

我已尝试过此代码:

sed -i 's/<?php.*?>//

和此:

sed -i 's/<?php.*?><?php.*?>//

但两者都删除整行。

1 个答案:

答案 0 :(得分:3)

.*贪婪:它匹配所有可能的字符。这样,即使sed 's/<?php.*//' file也会删除文件中的所有内容。

为了防止.*的这种贪婪,请说“除了?之外的所有内容” - &gt; [^?]*

sed 's/<?php[^?]*?><?php[^?]*?>//' file

测试

$ cat a
<?php echo 'first' ?><?php echo 'second' ?><?php echo 'third';?>
$ sed 's/<?php[^?]*?><?php[^?]*?>//' file
<?php echo 'third';?>