SED查找和删除两个字符串之间的复杂字符串

时间:2015-12-29 16:06:43

标签: unix replace command-line sed

我试图在多个文件中删除以标志(// ### - X - ###)开头和结尾的复杂字符串。我能够检测到包含代码的文件,但我的命令似乎没有执行删除字符串。

我的命令:

if (!$(this).html()) {
    $item = $('<li class="current" />').append($(this));
}

示例文件:https://www.dropbox.com/s/5drgnrbe4sgmkqo/indexdummy.php?dl=0

我忽略了什么吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您的第一个sed模式缺少斜杠(这就是它不匹配的原因):

^\/\/###--X--###

通过一系列线条从模式删除到模式:

sed '/^\/\/###--X--###/,/^\/\/###--X--###/d'

结果:

<?php
?>

这是你所期望的吗?删除调试代码?

find . -iname "*.php" -print -exec sed -i '/^\/\/###--X--###/,/^\/\/###--X--###/d' {} \;