Click on any of the 687 commands below to get a description and list of available options. All links in the command summaries point to the online version of the book on Safari Bookshelf.
Search one or more files for lines that match a regular expression pattern. Regular expressions are described in Chapter 7. Exit status is 0 if any lines match, 1 if none match, and 2 for errors. See also egrep and fgrep.
Options
-a, --text
Don't suppress output lines with binary data; treat as text.
-b, --byte-offset
Print the byte offset within the input file before each line of output.
-c, --count
Print only a count of matched lines. With -v or --revert-match option, count nonmatching lines.
-daction, --directories=action
Define an action for processing directories. Possible actions are:
read
Read directories like ordinary files (default).
skip
Skip directories.
recurse
Recursively read all files under each directory. Same as -r.
-epattern, --regexp=pattern
Search for pattern. Same as specifying a pattern as an argument, but useful in protecting patterns beginning with -.
-ffile, --file=file
Take a list of patterns from file, one per line.
-h, --no-filename
Print matched lines but not filenames (inverse of -l).
-i, --ignore-case
Ignore uppercase and lowercase distinctions.
-l, --files-with-matches
List the names of files with matches but not individual matched lines; scanning per file stops on the first match.
--mmap
Try to use memory mapping (mmap) to read input in order to save time.
-n, --line-number
Print lines and their line numbers.
-q, --quiet, --silent
Suppress normal output in favor of quiet mode; scanning stops on the first match.
-r, --recursive
Recursively read all files under each directory. Same as -d recurse.
-s, --no-messages
Suppress error messages about nonexistent or unreadable files.
-v, --invert-match
Print all lines that don't match pattern.
-w, --word-regexp
Match on whole words only. Words are divided by characters that are not letters, digits, or underscores.
-x, --line-regexp
Print lines only if pattern matches the entire line.
-Anum, --after-context=num
Print num lines of text that occur after the matching line.
-Bnum, --before-context=num
Print num lines of text that occur before the matching line.
-C[num] , --context[=num] , -num
Print num lines of leading and trailing context. Default context is 2 lines.
-E, -extended-regexp
Act like egrep, recognizing extended regular expressions such as (UN|POS)IX to find UNIX and POSIX.
-F, --fixed-strings
Act like fgrep, recognizing only fixed strings instead of regular expressions. Useful when searching for characters that grep normally recognizes as metacharacters.
-G, --basic-regexp
Expect the regular expressions traditionally recognized by grep (the default).
-H, --with-filename
Display, before each line found, the name of the file containing the line. This is done by default if multiple files are submitted to a single grep command.
-V, --version
Print the version number and then exit.
-Z, --null
When displaying filenames, follow each with a zero byte instead of a colon.
Examples
List the number of users who use tcsh:
grep -c /bin/tcsh /etc/passwd
List header files that have at least one #include directive: