GREP(1) — UNIX Programmer’s Manual
NAME
grep − search a file for a pattern
SYNOPSIS
grep [ option ] ... expression [ file ] ...
DESCRIPTION
Commands of the grep family search the input files (standard input default) for lines matching a pattern. Normally, each line found is copied to the standard output. Grep patterns are limited regular expressions in the style of ex(1); it uses a compact nondeterministic algorithm.
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 relative 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 Silent mode. Nothing is printed (except error messages). This is useful for checking the error status.
−e expression
Same as a simple expression argument, but useful when the expression begins with a −.
In all cases the file name is shown if there is more than one input file. Care should be taken when using the characters $ * [ ^ | ( ) and \ in the expression as they are also meaningful to the Shell. It is safest to enclose the entire expression argument in single quotes ´ ´.
Grep accepts metacharacter matching characters as well as fixed regular expressions. The metacharacter matching porotocol is as follows: (note that newline is not considered to be a ’character’).
A \ followed by a single character other than newline matches that character.
The character ^ ($) matches the beginning (end) of a line.
A . matches any character.
A single character not otherwise endowed with special meaning matches that character.
A string enclosed in brackets [] matches any single character from the string. Ranges of ASCII character 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 parenthesis level is [] then *+? then concatenation then | and newline.
EXAMPLE
grep -v -c ’regular’ grep.1
reports a count of the number of lines that do not contain the word regular in the file grep.1.
SEE ALSO
egrep(1), ex(1), fgrep(1), sed(1), sh(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.
7th Edition — 1/9/82