I enjoy sharing tips of something I’ve picked up with the hope it helps others. GREP is a common utility in the Unix world (thatis what I hear anyway), it’s something I’ve never really dug into. The day came I found a tip to pass along. I needed to search non-structured text files looking for specific text. I couldn’t find a clean way using Log Parser or Findstr utilities, these are two common tools I use. Updated – Here is the link I used to install on Windows http://gnuwin32.sourceforge.net/packages/grep.htm
What impressed me I could search for a set of text that contains commas, slashes and other normal separators as one string of text. Here is an example of what I was looking for. I tried the Windows Services for Unix utilities, but GNU Grep seemed more straight forward.
grep -i ‘example.com,max value, (Megabits/s)’ menu.h main.c
Usage: grep [OPTION]… PATTERN [FILE] …
Search for PATTERN in each FILE or standard input.
Example: grep -i ‘hello world’ menu.h main.c
Regexp selection and interpretation:
-E, -extended-regexp PATTERN is an extended regular expression
-F, -fixed-strings PATTERN is a set of newline-separated strings
-G, -basic-regexp PATTERN is a basic regular expression
-P, -perl-regexp PATTERN is a Perl regular expression
-e, -regexp=PATTERN use PATTERN as a regular expression
-f, -file=FILE obtain PATTERN from FILE
-i, -ignore-case ignore case distinctions
-w, -word-regexp force PATTERN to match only whole words
-x, -line-regexp force PATTERN to match only whole lines
-z, -null-data a data line ends in 0 byte, not newline
Miscellaneous:
-s, -no-messages suppress error messages
-v, -invert-match select non-matching lines
-V, -version print version information and exit
-help display this help and exit
-mmap use memory-mapped input if possible
Output control:
-m, -max-count=NUM stop after NUM matches
-b, -byte-offset print the byte offset with output lines
-n, -line-number print line number with output lines
-line-buffered flush output on every line
-H, -with-filename print the filename for each match
-h, -no-filename suppress the prefixing filename on output
-label=LABEL print LABEL as filename for standard input
-o, -only-matching show only the part of a line matching PATTERN
-q, -quiet, -silent suppress all normal output
-binary-files=TYPE assume that binary files are TYPE
TYPE is ‘binary’, ‘text’, or ‘without-match’
-a, -text equivalent to -binary-files=text
-I equivalent to -binary-files=without-match
-d, -directories=ACTION how to handle directories
ACTION is ‘read’, ‘recurse’, or ‘skip’
-D, -devices=ACTION how to handle devices, FIFOs and sockets
ACTION is ‘read’ or ‘skip’
-R, -r, -recursive equivalent to -directories=recurse
-include=PATTERN files that match PATTERN will be examined
-exclude=PATTERN files that match PATTERN will be skipped.
-exclude-from=FILE files that match PATTERN in FILE will be skipped.
-L, -files-without-match only print FILE names containing no match
-l, -files-with-matches only print FILE names containing matches
-c, -count only print a count of matching lines per FILE
-Z, -null print 0 byte after FILE name
Context control:
-B, -before-context=NUM print NUM lines of leading context
-A, -after-context=NUM print NUM lines of trailing context
-C, -context=NUM print NUM lines of output context
-NUM same as -context=NUM
-color[=WHEN],
-colour[=WHEN] use markers to distinguish the matching string
WHEN may be `always’, `never’ or `auto’.
-U, -binary do not strip CR characters at EOL (MSDOS)
-u, -unix-byte-offsets report offsets as if CRs were not there (MSDOS)
`egrep’ means `grep -E’. `fgrep’ means `grep -F’.
With no FILE, or when FILE is -, read standard input. If less than
two FILEs given, assume -h. Exit status is 0 if match, 1 if no match,
and 2 if trouble.