删除两个限制器之间的一行字符,包括它们自己

Delete the characters of a line between two limiters including themselves

破解后我需要清理一些代码添加到太多文件的第一行。

<?php $somevar = 'some code....... ?><?php

我需要在 <?php $somevar?> 之间进行清理,因为最新的 <?php 可能与 <html 等不同。

如果使用这个我需要两个陡峭的,因为不是干净的分隔符。我也需要删除定界符。

sed -i.bak 's/\(<?php $drnrwsrl\).*\(?>\)//' file.php

结果

<?php $drnrwsrl?><?php

而不是我想要的

<?php

尝试

sed -i.bak -E 's/(<\?php.*\(?>)(<\?php)//' file.php

使用不带反向引用的 BRE:

sed -i.bak 's/<?php $somevar[^>]*><?php/<?php/' file.php

仅应用于第一行:

sed -i.bak '1s/<?php $somevar[^>]*><?php/<?php/' file.php