GREP(1) GREP(1)
NAME
grep, egrep, fgrep - search a file for a pattern
SYNOPSIS
grep [ option ] ... expression [ file ] ...
egrep [ option ] ... [ expression ] [ file ] ...
fgrep [ option ] ... [ strings ] [ file ]
DESCRIPTION
Commands of the grep family search the input files (stan-
dard input default) for lines matching a pattern. Nor-
mally, each line found is copied to the standard output;
unless the -h flag is used, the file name is shown if
there is more than one input file.
Grep patterns are limited regular expressions in the style
of ed(1); it uses a compact nondeterministic algorithm.
Egrep patterns are full regular expressions; it uses a
fast deterministic algorithm that sometimes needs exponen-
tial space. Fgrep patterns are fixed strings; it is fast
and compact.
The following options are recognized.
-v All lines but those matching are printed.
-c Only a count of matching lines is printed.
-l The names of files with matching lines are listed
(once) separated by newlines.
-n Each line is preceded by its line number in the
file.
-b Each line is preceded by the block number on which
it was found. This is sometimes useful in locating
disk block numbers by context.
-s No output is produced, only status.
-h Do not print filename headers with output lines.
-y Lower case letters in the pattern will also match
upper case letters in the input (grep only).
-e expression
Same as a simple expression argument, but useful
when the expression begins with a -.
-f file
The regular expression (egrep) or string list
(fgrep) is taken from the file.
1
GREP(1) GREP(1)
-x (Exact) only lines matched in their entirety are
printed (fgrep only).
Care should be taken when using the characters $ * [ ^ | ?
' " ( ) and \ in the expression as they are also meaning-
ful to the Shell. It is safest to enclose the entire
expression argument in single quotes ' '.
Fgrep searches for lines that contain one of the (newline-
separated) strings.
Egrep accepts extended regular expressions. In the fol-
lowing description `character' excludes newline:
A \ followed by a single character matches that
character.
The character ^ ($) matches the beginning (end) of
a line.
A . matches any character.
A single character not otherwise endowed with spe-
cial meaning matches that character.
A string enclosed in brackets [] matches any single
character from the string. Ranges of ASCII charac-
ter codes may be abbreviated as in `a-z0-9'. A ]
may occur only as the first character of the
string. A literal - must be placed where it can't
be mistaken as a range indicator.
A regular expression followed by * (+, ?) matches a
sequence of 0 or more (1 or more, 0 or 1) matches
of the regular expression.
Two regular expressions concatenated match a match
of the first followed by a match of the second.
Two regular expressions separated by | or newline
match either a match for the first or a match for
the second.
A regular expression enclosed in parentheses
matches a match for the regular expression.
The order of precedence of operators at the same parenthe-
sis level is [] then *+? then concatenation then | and
newline.
SEE ALSO
ed(1), sed(1), sh(1)
2
GREP(1) GREP(1)
DIAGNOSTICS
Exit status is 0 if any matches are found, 1 if none, 2
for syntax errors or inaccessible files.
BUGS
Ideally there should be only one grep, but we don't know a
single algorithm that spans a wide enough range of space-
time tradeoffs.
Lines are limited to 256 characters; longer lines are
truncated.
3