+.TH GREP 1 "1988 December 13" "GNU Project"
+.UC 4
+.SH NAME
+grep, egrep \- print lines matching a regular expression
+.SH SYNOPSIS
+.B grep
+[
+.B \-CVbchilnsvwx
+] [
+.BI \- num
+] [
+.B \-AB
+.I num
+] [ [
+.B \-e
+]
+.I expr
+|
+.B \-f
+.I file
+] [
+.I "files ..."
+]
+.SH DESCRIPTION
+.I Grep
+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
+.IR expr .
+If any lines match, they are printed.
+.PP
+Also, if any matches were found,
+.I 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
+.I grep
+as a condition for, for example, the
+.I if
+statement.
+.PP
+When invoked as
+.I egrep
+the syntax of the
+.I expr
+is slightly different; See below.
+.br
+.SH "REGULAR EXPRESSIONS"
+.RS 2.5i
+.ta 1i; 2i
+.sp
+.ti -2.0i
+(grep) (egrep) (explanation)
+.sp
+.ti -2.0i
+\fIc\fP \fIc\fP a single (non-meta) character matches itself.
+.sp
+.ti -2.0i
+\&. . matches any single character except newline.
+.sp
+.ti -2.0i
+\\? ? postfix operator; preceeding item is optional.
+.sp
+.ti -2.0i
+\(** \(** postfix operator; preceeding item 0 or
+more times.
+.sp
+.ti -2.0i
+\\+ + postfix operator; preceeding item 1 or
+more times.
+.sp
+.ti -2.0i
+\\| | infix operator; matches either
+argument.
+.sp
+.ti -2.0i
+^ ^ matches the empty string at the beginning of a line.
+.sp
+.ti -2.0i
+$ $ matches the empty string at the end of a line.
+.sp
+.ti -2.0i
+\\< \\< matches the empty string at the beginning of a word.
+.sp
+.ti -2.0i
+\\> \\> matches the empty string at the end of a word.
+.sp
+.ti -2.0i
+[\fIchars\fP] [\fIchars\fP] 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 \fIfirst\-last\fP; for example, \\W
+(below) is equivalent to the class [^A\-Za\-z0\-9]
+.sp
+.ti -2.0i
+\\( \\) ( ) parentheses are used to override operator precedence.
+.sp
+.ti -2.0i
+\\\fIdigit\fP \\\fIdigit\fP \\\fIn\fP matches a repeat of the text
+matched earlier in the regexp by the subexpression inside the nth
+opening parenthesis.
+.sp
+.ti -2.0i
+\\ \\ any special character may be preceded
+by a backslash to match it literally.
+.sp
+.ti -2.0i
+(the following are for compatibility with GNU Emacs)
+.sp
+.ti -2.0i
+\\b \\b matches the empty string at the edge of a word.
+.sp
+.ti -2.0i
+\\B \\B matches the empty string if not at the edge of a word.
+.sp
+.ti -2.0i
+\\w \\w matches word-constituent characters (letters & digits).
+.sp
+.ti -2.0i
+\\W \\W matches characters that are not word-constituent.
+.RE
+.PP
+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 implements) the exact grammar understood by the parser.
+.SH OPTIONS
+.TP
+.BI \-A " num"
+print <num> lines of context after every matching line
+.TP
+.BI \-B " num"
+print
+.I num
+lines of context before every matching line
+.TP
+.B \-C
+print 2 lines of context on each side of every match
+.TP
+.BI \- num
+print
+.I num
+lines of context on each side of every match
+.TP
+.B \-V
+print the version number on the diagnostic output
+.TP
+.B \-b
+print every match preceded by its byte offset
+.TP
+.B \-c
+print a total count of matching lines only
+.TP
+.BI \-e " expr"
+search for
+.IR expr ;
+useful if
+.I expr
+begins with \-
+.TP
+.BI \-f " file"
+search for the expression contained in
+.I file
+.TP
+.B \-h
+don't display filenames on matches
+.TP
+.B \-i
+ignore case difference when comparing strings
+.TP
+.B \-l
+list files containing matches only
+.TP
+.B \-n
+print each match preceded by its line number
+.TP
+.B \-s
+run silently producing no output except error messages
+.TP
+.B \-v
+print only lines that contain no matches for the <expr>
+.TP
+.B \-w
+print only lines where the match is a complete word
+.TP
+.B \-x
+print only lines where the match is a whole line
+.SH "SEE ALSO"
+emacs(1), ed(1), sh(1),
+.I "GNU Emacs Manual"
+.SH INCOMPATIBILITIES
+The following incompatibilities with UNIX
+.I grep
+exist:
+.PP
+.RS 0.5i
+The context-dependent meaning of \(** is not quite the same (grep only).
+.PP
+.B \-b
+prints a byte offset instead of a block offset.
+.PP
+The {\fIm,n\fP} construct of System V grep is not implemented.
+.PP
+.SH BUGS
+GNU \fIe?grep\fP has been thoroughly debugged and tested by several 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.
+.PP
+There is also a newsgroup, gnu.utils.bug, for reporting FSF utility
+programs' bugs and fixes; but before reporting 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 \fIevery\fR bug report that you
+send in. Please do not send anything but bug reports to this
+newsgroup.
+.PP
+.SH AVAILABILITY
+.PP
+GNU
+.I grep
+is free; anyone may redistribute copies of
+.I grep
+to
+anyone under the terms stated in the
+GNU General Public License,
+a copy of which may be found in each copy of
+.IR "GNU Emacs" .
+See also the comment at the beginning of the source code file grep.c.
+.PP
+Copies of GNU
+.I 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 permitted. In fact, the primary purpose of the General Public
+License is to prohibit anyone from attaching any other restrictions
+to redistribution of any of the Free Software Foundation programs.
+.SH AUTHORS
+Mike Haertel wrote the deterministic regexp code and the bulk
+of the program.
+.PP
+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.
+.PP
+Arthur David Olson contributed code that finds fixed strings for
+the aforementioned BMG search for a large class of regexps.
+.PP
+Richard Stallman wrote the backtracking regexp matcher that is
+used for \\\fIdigit\fP backreferences, as well as the getopt that
+is provided for 4.2BSD sites. The backtracking matcher was
+originally written for GNU Emacs.
+.PP
+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.)
+.PP
+Scott Anderson and Henry Spencer designed the regression tests
+used in the "regress" script.
+.PP
+Paul Placeway wrote the original version of this manual page.