为什么grep不以此正则表达式结束?

时间:2015-08-10 00:03:52

标签: regex unix grep pcre

我正在尝试使用grep来分析我拥有的一堆C#文件,以匹配特定类型的for循环。具体来说,任何看起来如下的内容都匹配:

for (int i = 0; i < foo.Length; i++)
{
    foo[i] = bar[i];
}

在我学会了grep不支持多行之后,我尝试安装pcregrep,但它没有成功。这是我的(当然非常草率)正则表达式:

pcregrep -rlM "for (int i = 0; i < [A-Za-z]*\.Length; i++)\n[ *]\{\n[ *][A-Za-z]*\[i\] = [A-Za-z]*\[i\];\n[ *]\}"

我在大约10分钟前运行了这个命令,它仍在运行(尽管CPU使用率非常低,令人惊讶)。我做错了什么/有更快的方法吗?

1 个答案:

答案 0 :(得分:3)

pcregrep不同,

grep不会推断-r中的“使用当前目录”,因此它正在等待输入,这使其看起来像是悬挂。明确指定路径:

pcregrep -rlM … .