


GREP(1)                  USER COMMANDS                    GREP(1)



NAME
     grep, egrep - print lines matching a regular expression

SYNOPSIS
     grep [ -CVbchilnsvwx ] [ -›4mnum›24m ] [ -AB ›4mnum›24m ] [ [ -e ] ›4mexpr›24m  |
     -f ›4mfile›24m ] [ ›4mfiles›24m ... ]

DESCRIPTION
     ›4mGrep›24m searches the files listed in the arguments (or standard
     input  if  no  files are given) for all lines that contain a
     match for the given ›4mexpr›24m.  If  any  lines  match,  they  are
     printed.

     Also, if any matches were found, ›4mgrep›24m exits with a status of
     0, but if no matches were found it exits with a status of 1.
     This is useful for building shell scripts that use ›4mgrep›24m as a
     condition for, for example, the ›4mif›24m statement.

     When invoked as ›4megrep›24m the syntax of  the  ›4mexpr›24m  is  slightly
     different; See below.

REGULAR EXPRESSIONS
          (grep)    (egrep)   (explanation)

          ›4mc›24m         ›4mc›24m         a   single   (non-meta)   character
                              matches itself.

          .         .         matches any single character except
                              newline.

          \?        ?         postfix operator;  preceeding  item
                              is optional.

          *         *         postfix operator; preceeding item 0
                              or more times.

          \+        +         postfix operator; preceeding item 1
                              or more times.

          \|        |         infix  operator;   matches   either
                              argument.

          ^         ^         matches the  empty  string  at  the
                              beginning of a line.

          $         $         matches the empty string at the end
                              of a line.

          \<        \<        matches the  empty  string  at  the
                              beginning of a word.

          \>        \>        matches the empty string at the end



GNU Project       Last change: 1988 December 13                 1






GREP(1)                  USER COMMANDS                    GREP(1)



                              of a word.

          [›4mchars›24m]   [›4mchars›24m]   match any character  in  the  given
                              class; if the first character after
                              [ is ^, match any character not  in
                              the given class; a range of charac-
                              ters   may    be    specified    by
                              ›4mfirst›24m-›4mlast›24m; for example, \W (below)
                              is   equivalent   to   the    class
                              [^A-Za-z0-9]

          \( \)     ( )       parentheses are  used  to  override
                              operator precedence.

          \›4mdigit›24m    \›4mdigit›24m    \›4mn›24m matches a  repeat  of  the  text
                              matched  earlier  in  the regexp by
                              the subexpression  inside  the  nth
                              opening parenthesis.

          \         \         any special character may  be  pre-
                              ceded  by  a  backslash to match it
                              literally.

          (the following are for compatibility with GNU Emacs)

          \b        \b        matches the  empty  string  at  the
                              edge of a word.

          \B        \B        matches the empty string if not  at
                              the edge of a word.

          \w        \w        matches word-constituent characters
                              (letters & digits).

          \W        \W        matches  characters  that  are  not
                              word-constituent.

     Operator precedence is (highest to lowest) ?, *, and +, con-
     catenation, and finally |.  All other constructs are syntac-
     tically identical  to  normal  characters.   For  the  truly
     interested,  the  file  dfa.c describes (and implements) the
     exact grammar understood by the parser.

OPTIONS
     -A ›4mnum›24m
          print <num> lines of context after every matching line

     -B ›4mnum›24m
          print ›4mnum›24m lines of context before every matching line

     -C   print 2 lines of context on each side of every match




GNU Project       Last change: 1988 December 13                 2






GREP(1)                  USER COMMANDS                    GREP(1)



     -›4mnum›24m print ›4mnum›24m lines of context on each side of every match

     -V   print the version number on the diagnostic output

     -b   print every match preceded by its byte offset

     -c   print a total count of matching lines only

     -e ›4mexpr›24m
          search for ›4mexpr›24m; useful if ›4mexpr›24m begins with -

     -f ›4mfile›24m
          search for the expression contained in ›4mfile›24m

     -h   don't display filenames on matches

     -i   ignore case difference when comparing strings

     -l   list files containing matches only

     -n   print each match preceded by its line number

     -s   run silently producing no output except error messages

     -v   print only lines that contain no matches for the <expr>

     -w   print only lines where the match is a complete word

     -x   print only lines where the match is a whole line

SEE ALSO
     emacs(1), ed(1), sh(1), ›4mGNU›24m ›4mEmacs›24m ›4mManual›24m

INCOMPATIBILITIES
     The following incompatibilities with UNIX ›4mgrep›24m exist:

          The context-dependent meaning of *  is  not  quite  the
          same (grep only).

          -b prints a byte offset instead of a block offset.

          The {›4mm›24m,›4mn›24m} construct of System  V  grep  is  not  imple-
          mented.

BUGS
     GNU ›4me›24m?›4mgrep›24m has been thoroughly debugged and  tested  over  a
     period  of  several years; we think it's a reliable beast or
     we wouldn't distribute it.  If by some fluke of the universe
     you  discover  a bug, send a detailed description (including
     options, regular expressions, and a copy of  an  input  file
     that can reproduce it) to mike@ai.mit.edu.




GNU Project       Last change: 1988 December 13                 3






GREP(1)                  USER COMMANDS                    GREP(1)



AUTHORS
     Mike Haertel wrote the deterministic  regexp  code  and  the
     bulk of the program.

     James A. Woods is  responsible  for  the  hybridized  search
     strategy  of using Boyer-Moore-Gosper fixed-string search as
     a filter before calling the general regexp matcher.

     Arthur David Olson contributed code that finds fixed strings
     for  the  aforementioned  BMG  search  for  a large class of
     regexps.

     Richard Stallman wrote the backtracking regexp matcher  that
     is  used  for  \›4mdigit›24m  backreferences,  as  well  as the GNU
     getopt.  The backtracking matcher was originally written for
     GNU Emacs.

     D. A. Gwyn wrote the C alloca emulation that is provided  so
     System  V  machines  can  run this program.  (Alloca is used
     only by RMS' backtracking matcher, and then only rarely,  so
     there  is  no  loss  if  your  machine doesn't have a "real"
     alloca.)

     Scott Anderson and Henry  Spencer  designed  the  regression
     tests used in the "regress" script.

     Paul Placeway wrote the  original  version  of  this  manual
     page.



























GNU Project       Last change: 1988 December 13                 4



