我继承了一个我需要修复的大文件。它包含超过500个echo语句,以前的开发人员包含它来调试他的代码。我需要找到一种简单的方法来消除所有这些echo语句,因此我不会将所有这些垃圾输出都输出到屏幕上。有时他将回声放在与另一段代码相同的行上。
我有一个想法是创建一个名为" nullo"什么都不做。然后用nullo搜索并替换单词echo。但是" echo"通常没有括号。因此PHP在遇到如下语句时会发出错误:
nullo' LABEL:';
如果我需要通过每一个并手动添加括号,如下所示:
nullo(' LABEL:');
我不妨继续删除所有500多个。 "回声"有时也与其他必要的代码在同一行。所以我不能忘掉所有这些线条。
以下是我正在处理的一些代码的示例。
function sample_func(){
global $somevar;
$allnames = "";
echo 'LABEL: '; foreach($somevar as $var2) foreach($var2 as $pickk){ echo ' -' , $pickk[0]->key , '-' , $pickk[1]->name; $allnames=$allnames.$pickk[1]->name;}
return $allnames;
}
我不反对下载和安装一些可以进行智能搜索和替换的花哨的IDE /记事本程序。 有什么想法吗?
答案 0 :(得分:2)
这有用吗?它使用占有量词来减少正则表达式引擎的运行时间,因为您找到了超过500个实例...如果您想要任何其他说明或功能,请告诉我。
\becho\b[^;]++;
\b
是一个字锚,可确保"prechordal"
之类的其他字词不匹配。
答案 1 :(得分:1)
使用它:
sed '/^[[:blank:]]*echo.*\;*[[:blank:]]*/d;s/^[[:blank:]]*echo.*\;//;s/ echo.*\;//' your_file.ext > new_file.ext
感谢以下评论:)
最后的编辑还删除了只有回声的行,使编辑后的文件更加清晰。
答案 2 :(得分:0)
这个怎么样?:(^|(;))\s*echo\s.*;
捕获在行开头或分号前面的任何echo
,直到下一个分号。您必须使用\2
或$2
(无论您的编辑使用哪种方式)进行反向引用,以替换正则表达式删除的任何前导分号。