我在使用SED时遇到了问题。
我在第一行有一个php文件,这个结构:
<?php echo 'first' ?><?php echo 'second' ?><?php echo 'third';?>
我试图删除前两个语句,结果是:
<?php echo 'third';?>
我已尝试过此代码:
sed -i 's/<?php.*?>//
和此:
sed -i 's/<?php.*?><?php.*?>//
但两者都删除整行。
答案 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';?>