0

I'm trying to analyze a bunch of C# files I have, with grep, to match a particular type of for-loop. Specifically, anything that looks like the following would match:

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

I tried installing pcregrep after I learned grep didn't support multiline, but it's not working out. Here is my (admittedly very sloppy) regexp:

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

I ran this command about 10 minutes ago, and it's still running (albeit at very low CPU usage, surprisingly). Am I doing something wrong / Is there a faster way to do this?

Community
  • 1
  • 1
James Ko
  • 29,012
  • 25
  • 114
  • 214

1 Answers1

3

pcregrep, unlike grep, doesn’t infer “use the current directory” from -r, so it’s waiting for input, which gives it the appearance of hanging. Specify the path explicitly:

pcregrep -rlM … .
Ry-
  • 209,133
  • 54
  • 439
  • 449