Coding, is? Fun!

Thursday, October 27, 2005

GREP for windows

I found the open source Grep for Windows application from sourceforge.net URL:
http://gnuwin32.sourceforge.net/packages/grep.htm
The install does not add grep.exe to the path in windows; I had to do it myself.
The documentation has examples and all the usage options.

C:>grep --help shows all the options and their uses.
I tried some different grep statements:
1. Find Grant statements in a .NET database project
grep -E GRANT -r -h *.*
-h is to eliminate preceding filename
-E is for the pattern (extended regular expression)
-r is for recursive
I used -E because that was the first one I found, but -G can be used too.

2.Find one word with another word in the same line, irrespective of order
For example, to find the words "Emacs" and "gnu" in the same line.
grep -r -i -E Emacs *.* | grep -E gnu

This actually uses the "pipe" or "|" character to feed the output of one statement to another.

3. To find lines with (Emacs AND gnu) OR (Emac AND org)
grep -r -i -E "Emacs" *.* | grep -r -i -E "gnu|org"

The pipe "|" in this case is part of the regular expression and can only be used within the double quotes. If it is used without the double quotes, the command shell would interpret "org" as a command and not part of the regular expression.
4. Exclude a file
grep -r -i --exclude-pattern.txt -E "Emacs" *.* | grep -r -i -E "gnu|org"

excludes pattern.txt from the list of files to search.

5.Get more lines AFTER the matching line
grep -r -i -A 5 --exclude-pattern.txt -E "Emacs" *.* | grep -r -i -E "gnu|org"

The -A 5 gets 4 more lines AFTER the matching line.
The -B 5 gets 4 more lines BEFORE the matching line.

0 Comments:

Post a Comment

<< Home