Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ grep(1) — BSD/386 1.0

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

emacs(1)

ed(1)

sh(1)



GREP(1)                                                   GREP(1)


NAME
       grep, egrep - print lines matching a regular expression

SYNOPSIS
       grep  [ -CVbchilnsvwx ] [ -num ] [ -AB num ] [ [ -e ] expr
       | -f file ] [ files ...  ]

DESCRIPTION
       Grep searches the files listed in the arguments (or  stan-
       dard  input if no files are given) for all lines that con-
       tain a match for the given expr.  If any lines match, they
       are printed.

       Also,  if  any  matches  were found, grep will exit with a
       status of 0, but if no matches were  found  it  will  exit
       with  a  status  of  1.  This is useful for building shell
       scripts that use grep as a condition for, for example, the
       if statement.

       When  invoked  as egrep the syntax of the expr is slightly
       different; See below.

REGULAR EXPRESSIONS
            (grep)    (egrep)(explanation)

            c         ca  single  (non-meta)  character   matches
                                itself.

            .         .matches  any  single character except new-
                                line.

            \?        ?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 of  a
                                word.




GNU Project              1988 December 13                       1




GREP(1)                                                   GREP(1)


            [chars]   [chars]match  any  character  in  the given
                                class;  if  the  first  character
                                after [ is ^, match any character
                                not in the given class;  a  range
                                of characters may be specified by
                                first-last;   for   example,   \W
                                (below)   is  equivalent  to  the
                                class [^A-Za-z0-9]

            \( \)     ( )parentheses are used to override  opera-
                                tor precedence.

            \digit    \digit\n  matches  a  repeat  of  the  text
                                matched earlier in the regexp  by
                                the  subexpression inside the nth
                                opening parenthesis.

            \         \any special character may be preceded by a
                                backslash  to match it literally.

            (the following are for compatibility with GNU Emacs)

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

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

            \w        \wmatches word-constituent characters (let-
                                ters & digits).

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

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

OPTIONS
       -A num print <num> lines of context after  every  matching
              line

       -B num print  num  lines  of context before every matching
              line

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

       -num   print  num  lines  of context on each side of every
              match

       -V     print the version number on the diagnostic output



GNU Project              1988 December 13                       2




GREP(1)                                                   GREP(1)


       -b     print every match preceded by its byte offset

       -c     print a total count of matching lines only

       -e expr
              search for expr; useful if expr begins with -

       -f file
              search for the expression contained in file

       -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  mes-
              sages

       -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), GNU Emacs Manual

INCOMPATIBILITIES
       The following incompatibilities with UNIX grep exist:

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

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

            The {m,n} construct of System V grep  is  not  imple-
            mented.


BUGS
       GNU e?grep has been thoroughly debugged and tested by sev-
       eral people over a period of several months; 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  me,
       mike@wheaties.ai.mit.edu.

       There  is  also  a newsgroup, gnu.utils.bug, for reporting
       FSF utility programs' bugs and fixes; but before reporting



GNU Project              1988 December 13                       3




GREP(1)                                                   GREP(1)


       something  as  a bug, please try to be sure that it really
       is a bug, not a misunderstanding or a deliberate  feature.
       Also,  include  the  version number of the utility program
       you are running in every bug  report  that  you  send  in.
       Please  do not send anything but bug reports to this news-
       group.


AVAILABILITY
       GNU grep is free; anyone may redistribute copies  of  grep
       to anyone under the terms stated in the GNU General Public
       License, a copy of which may be found in each copy of  GNU
       Emacs.   See  also  the  comment  at  the beginning of the
       source code file grep.c.

       Copies of GNU grep may sometimes be received packaged with
       distributions of Unix systems, but it is never included in
       the scope of any license  covering  those  systems.   Such
       inclusion violates the terms on which distribution is per-
       mitted.  In fact, the primary purpose of the General  Pub-
       lic License is to prohibit anyone from attaching any other
       restrictions to redistribution of any of the Free Software
       Foundation programs.

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  \digit backreferences, as well as the
       getopt that is provided for 4.2BSD sites.  The  backtrack-
       ing 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              1988 December 13                       4


Typewritten Software • bear@typewritten.org • Edmonds, WA 98026