/usr/bin/grep [-bchilnsvw] limited-regular-expression [filename]...
/usr/xpg4/bin/grep [-E | -F] [-c | -l | -q] [-bhinsvwx] -e pattern_list... [-f pattern_file]... [file]...
/usr/xpg4/bin/grep [-E | -F] [-c | -l | -q] [-bhinsvwx] [-e pattern_list]... -f pattern_file... [file]...
/usr/xpg4/bin/grep [-E | -F] [-c | -l | -q] [-bhinsvwx] pattern [file]...
The grep utility searches text files for a pattern and prints all lines that contain that pattern. It uses a compact non-deterministic algorithm.
Be careful using the characters $, *, [, ^, |, (, ), and \ in the pattern_list because they are also meaningful to the shell. It is safest to enclose the entire pattern_list in single quotes a'...a'.
If no files are specified, grep assumes standard input. Normally, each line found is copied to standard output. The file name is printed before each line found if there is more than one input file.
The /usr/bin/grep utility uses limited regular expressions like those described on the regexp(5) manual page to match the patterns.
The options -E and -F affect the way /usr/xpg4/bin/grep interprets pattern_list. If -E is specified, /usr/xpg4/bin/grep interprets pattern_list as a full regular expression (see -E for description). If -F is specified, grep interprets pattern_list as a fixed string. If neither are specified, grep interprets pattern_list as a basic regular expression as described on regex(5) manual page.
The following options are supported for both /usr/bin/grep and /usr/xpg4/bin/grep:
The following options are supported for /usr/xpg4/bin/grep only:
The following operands are supported:
The -e pattern_list option has the same effect as the pattern_list operand, but is useful when pattern_list begins with the hyphen delimiter. It is also useful when it is more convenient to provide multiple patterns as separate arguments.
Multiple -e and -f options are accepted and grep uses all of the patterns it is given while matching input text lines. Notice that the order of evaluation is not specified. If an implementation finds a null string as a pattern, it is allowed to use that pattern first, matching every line, and effectively ignore any other patterns.
The -q option provides a means of easily determining whether or not a pattern (or string) exists in a group of files. When searching several files, it provides a performance improvement (because it can quit as soon as it finds the first match) and requires less care by the user in choosing the set of files to supply as arguments (because it exits zero if it finds a match even if grep detected an access or read error on earlier file operands).
See largefile(5) for the description of the behavior of grep when encountering files greater than or equal to 2 Gbyte ( 2^31 bytes).
Example 1 Finding All Uses of a Word
To find all uses of the word "Posix" (in any case) in the file text.mm, and write with line numbers:
example% /usr/bin/grep -i -n posix text.mm
Example 2 Finding All Empty Lines
To find all empty lines in the standard input:
example% /usr/bin/grep ^$
example% /usr/bin/grep -v .
Example 3 Finding Lines Containing Strings
All of the following commands print all lines containing strings abc or def or both:
example% /usr/xpg4/bin/grep 'abc def' example% /usr/xpg4/bin/grep -e 'abc def' example% /usr/xpg4/bin/grep -e 'abc' -e 'def' example% /usr/xpg4/bin/grep -E 'abc|def' example% /usr/xpg4/bin/grep -E -e 'abc|def' example% /usr/xpg4/bin/grep -E -e 'abc' -e 'def' example% /usr/xpg4/bin/grep -E 'abc def' example% /usr/xpg4/bin/grep -E -e 'abc def' example% /usr/xpg4/bin/grep -F -e 'abc' -e 'def' example% /usr/xpg4/bin/grep -F 'abc def' example% /usr/xpg4/bin/grep -F -e 'abc def'
Example 4 Finding Lines with Matching Strings
Both of the following commands print all lines matching exactly abc or def:
example% /usr/xpg4/bin/grep -E '^abc$ ^def$' example% /usr/xpg4/bin/grep -F -x 'abc def'
See environ(5) for descriptions of the following environment variables that affect the execution of grep: LANG, LC_ALL, LC_COLLATE, LC_CTYPE, LC_MESSAGES, and NLSPATH.
The following exit values are returned:
See attributes(5) for descriptions of the following attributes:
egrep(1), fgrep(1), sed(1), sh(1), attributes(5), environ(5), largefile(5), regex(5), regexp(5), standards(5)
Lines are limited only by the size of the available virtual memory. If there is a line with embedded nulls, grep only matches up to the first null. If the line matches, the entire line is printed.
The results are unspecified if input files contain lines longer than LINE_MAX bytes or contain binary data. LINE_MAX is defined in /usr/include/limits.h.