Aller au contenu

grep --options

grep (BSD) grep (GNU)
-A num, --after-context=num
Print num lines of trailing context after each match. See also the -B and -C options.
-A NUM, --after-context=NUM
Print NUM lines of trailing context after matching lines. Places a line containing a group separator (--) between contiguous groups of matches. With the -o or --only-matching option, this has no effect and a warning is given.
-a, --text
Treat all files as ASCII text.
-a, --text
Process a binary file as if it were text; this is equivalent to the --binary-files=text option.
-B num, --before-context=num
Print num lines of leading context before each match. See also the -A and -C options.
-B NUM, --before-context=NUM
Print NUM lines of leading context before matching lines. Places a line containing a group separator (--) between contiguous groups of matches. With the -o or --only-matching option, this has no effect and a warning is given.
-b, --byte-offset
The offset in bytes of a matched pattern is displayed in front of the respective matched line.
-b, --byte-offset
Print the 0-based byte offset within the input file before each line of output. If -o (--only-matching) is specified, print the offset of the matching part itself.
-C[num, --context=num]
Print num lines of leading and trailing context surrounding each match. The default is 2 and is equivalent to -A 2 -B 2.
-C NUM, -NUM, --context=NUM
Print NUM lines of output context. Places a line containing a group separator (--) between contiguous groups of matches.
With the -o or --only-matching option, this has no effect and a warning is given.
-c, --count
Only a count of selected lines is written to standard output.
-c, --count
Suppress normal output; instead print a count of matching lines for each input file. With the -v, --invert-match option (see below), count non-matching lines.
--colour=[when, --color=[when]]
Mark up the matching text with the expression stored in GREP_COLOR environment variable. The possible values of when can be 'never', 'always' or 'auto'.
--color[=WHEN], --colour[=WHEN]
Surround the matched (non-empty) strings, matching lines, context lines, file names, line numbers, byte offsets, and separators (for fields and groups of context lines) with escape sequences to display them in color on the terminal. The colors are defined by the environment variable GREP_COLORS. The deprecated environment variable GREP_COLOR is still supported, but its setting does not have priority. WHEN is never, always, or auto.
-D action, --devices=action
Specify the demanded action for devices, FIFOs and sockets. The default action is 'read', which means, that they are read as if they were normal files. If the action is set to 'skip', devices will be silently skipped.
-D ACTION, --devices=ACTION
If an input file is a device, FIFO or socket, use ACTION to process it. By default, ACTION is read, which means that devices are read just as if they were ordinary files. If ACTION is skip, devices are silently skipped.
-d action, --directories=action
Specify the demanded action for directories. It is 'read' by default, which means that the directories are read in the same manner as normal files. Other possible values are 'skip' to silently ignore the directories, and 'recurse' to read them recursively, which has the same effect as the -R and -r option.
-d ACTION, --directories=ACTION
If an input file is a directory, use ACTION to process it. By default, ACTION is read, i.e., read directories just as if they were ordinary files. If ACTION is skip, silently skip directories. If ACTION is recurse, read all files under each directory, recursively, following symbolic links only if they are on the command line. This is equivalent to the -r option.
-E, --extended-regexp
Interpret pattern as an extended regular expression
-E, --extended-regexp
Interpret PATTERNS as extended regular expressions (EREs, see below).
-e pattern, --regexp=pattern
Specify a pattern used during the search of the input: an input line is selected if it matches any of the specified patterns. This option is most useful when multiple -e options are used to specify multiple patterns, or when a pattern begins with a dash (`-').
-e PATTERNS, --regexp=PATTERNS
Use PATTERNS as the patterns. If this option is used multiple times or is combined with the -f (--file) option, search for all patterns given. This option can be used to protect a pattern beginning with "-".
--exclude
If specified, it excludes files matching the given filename pattern from the search. Note that --exclude patterns take priority over --include patterns, and if no --include pattern is specified, all files are searched that are not excluded. Patterns are matched to the full path specified, not only to the filename component.
--exclude=GLOB
Skip any command-line file with a name suffix that matches the pattern GLOB, using wildcard matching; a name suffix is either the whole name, or a trailing part that starts with a non-slash character immediately after a slash (/) in the name. When searching recursively, skip any subfile whose base name matches GLOB; the base name is the part after the last slash. A pattern can use *, ?, and [...] as wildcards, and to quote a wildcard or backslash character literally.
--exclude-from=FILE
Skip files whose base name matches any of the file-name globs read from FILE (using wildcard matching as described under --exclude).
--exclude-dir
If -R is specified, it excludes directories matching the given filename pattern from the search. Note that --exclude-dir patterns take priority over --include-dir patterns, and if no --include-dir pattern is specified, all directories are searched that are not excluded.
--exclude-dir=GLOB
Skip any command-line directory with a name suffix that matches the pattern GLOB. When searching recursively, skip any subdirectory whose base name matches GLOB. Ignore any redundant trailing slashes in GLOB.
-F, --fixed-strings
Interpret pattern as a set of fixed strings
-F, --fixed-strings
Interpret PATTERNS as fixed strings, not regular expressions.
-f file, --file=file
Read one or more newline separated patterns from file. Empty pattern lines match every input line. Newlines are not considered part of a pattern. If file is empty, nothing is matched.
-f FILE, --file=FILE
Obtain patterns from FILE, one per line. If this option is used multiple times or is combined with the -e (--regexp) option, search for all patterns given. The empty file contains zero patterns, and therefore matches nothing.
-G, --basic-regexp
Interpret pattern as a basic regular expression.
-G, --basic-regexp
Interpret PATTERNS as basic regular expressions (BREs, see below). This is the default.
-H
Always print filename headers with output lines.
-H, --with-filename
Print the file name for each match. This is the default when there is more than one file to search.
-h, --no-filename
Never print filename headers (i.e. filenames) with output lines.
-h, --no-filename
Suppress the prefixing of file names on output. This is the default when there is only one file (or only standard input) to search.
--help
Print a brief help message.
--help
Output a usage message and exit.
-I
Ignore binary files. This option is equivalent to --binary-file=without-match option.
-I
Process a binary file as if it did not contain matching data; this is equivalent to the --binary-files=without-match option.
--include
If specified, only files matching the given filename pattern are searched. Note that --exclude patterns take priority over --include patterns. Patterns are matched to the full path specified, not only to the filename component.
--include=GLOB
Search only files whose base name matches GLOB (using wildcard matching as described under --exclude).
If contradictory --include and --exclude options are given, the last matching one wins.
If no --include or --exclude options match, a file is included unless the first such option is --include.
--include-dir
If -R is specified, only directories matching the given filename pattern are searched. Note that --exclude-dir patterns take priority over --include-dir patterns.
-J, --bz2decompress
Decompress the bzip2(1) compressed file before looking for the text.
-L, --files-without-match
Only the names of files not containing selected lines are written to standard output. Pathnames are listed once per file searched. If the standard input is searched, the string "(standard input)'' is written.
-L, --files-without-match
Suppress normal output; instead print the name of each input file from which no output would normally have been printed. The scanning will stop on the first match.
-l, --files-with-matches
Only the names of files containing selected lines are written to standard output. grep will only search a file until a match has been found, making searches potentially less expensive. Pathnames are listed once per file searched. If the standard input is searched, the string "(standard input)'' is written.
-l, --files-with-matches
Suppress normal output; instead print the name of each input file from which output would normally have been printed. The scanning will stop on the first match.
--mmap
Use mmap(2) instead of read(2) to read input, which can result in better performance under some circumstances but can cause undefined behaviour.
-m num, --max-count=num
Stop reading the file after num matches.
-m NUM, --max-count=NUM
Stop reading a file after NUM matching lines. If the input is standard input from a regular file, and NUM matching lines are output, grep ensures that the standard input is positioned to just after the last matching line before exiting, regardless of the presence of trailing context lines. This enables a calling process to resume a search.
When grep stops after NUM matching lines, it outputs any trailing context lines.
When the -c or --count option is also used, grep does not output a count greater than NUM.
When the -v or --invert-match option is also used, grep stops after outputting NUM non-matching lines.
-n, --line-number
Each output line is preceded by its relative line number in the file, starting at line 1. The line number counter is reset for each file processed. This option is ignored if -c, -L, -l, or -q is specified.
-n, --line-number
Prefix each line of output with the 1-based line number within its input file.
--null
Prints a zero-byte after the file name.
-Z, --null
Output a zero byte (the ASCII NUL character) instead of the character that normally follows a file name. For example, grep -lZ outputs a zero byte after each file name instead of the usual newline. This option makes the output unambiguous, even in the presence of file names containing unusual characters like newlines. This option can be used with commands like find -print0, perl -0, sort -z, and xargs -0 to process arbitrary file names, even those that contain newline characters.
-O
If -R is specified, follow symbolic links only if they were explicitly listed on the command line. The default is not to follow symbolic links.
-o, --only-matching
Prints only the matching part of the lines.
-o, --only-matching
Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.
-p
If -R is specified, no symbolic links are followed. This is the default.
-q, --quiet, --silent
Quiet mode: suppress normal output. grep will only search a file until a match has been found, making searches potentially less expensive.
-q, --quiet, --silent
Quiet; do not write anything to standard output. Exit immediately with zero status if any match is found, even if an error was detected. Also see the -s or --no-messages option.
-R, -r, --recursive
Recursively search subdirectories listed.
-r, --recursive
Read all files under each directory, recursively, following symbolic links only if they are on the command line. Note that if no file operand is given, grep searches the working directory. This is equivalent to the -d recurse option.
-R, --dereference-recursive
Read all files under each directory, recursively. Follow all symbolic links, unlike -r.
-S
If -R is specified, all symbolic links are followed. The default is not to follow symbolic links.
-s, --no-messages
Silent mode. Nonexistent and unreadable files are ignored (i.e. their error messages are suppressed).
-s, --no-messages
Suppress error messages about nonexistent or unreadable files.
-U, --binary
Search binary files, but do not attempt to print them.
-U, --binary
Treat the file(s) as binary. By default, under MS-DOS and MS-Windows, grep guesses whether a file is text or binary as described for the --binary-files option. If grep decides the file is a text file, it strips the CR characters from the original file contents (to make regular expressions with ^ and $ work correctly).
Specifying -U overrules this guesswork, causing all files to be read and passed to the matching mechanism verbatim; if the file is a text file with CR/LF pairs at the end of each line, this will cause some regular expressions to fail. This option has no effect on platforms other than MS-DOS and MS-Windows.
-V, --version
Display version information and exit.
-V, --version
Output the version number of grep and exit.
-v, --invert-match
Selected lines are those not matching any of the specified patterns.
-v, --invert-match
Invert the sense of matching, to select non-matching lines.
-w, --word-regexp
The expression is searched for as a word (as if surrounded by [[:<:]] and [[:>:]]; see re_format(7)).
-w, --word-regexp
Select only those lines containing matches that form whole words. The test is that the matching substring must either be at the beginning of the line, or preceded by a non-word constituent character. Similarly, it must be either at the end of the line or followed by a non-word constituent character. Word-constituent characters are letters, digits, and the underscore.This option has no effect if -x is also specified.
-x, --line-regexp
Only input lines selected against an entire fixed string or regular expression are considered to be matching lines.
-x, --line-regexp
Select only those matches that exactly match the whole line. For a regular expression pattern, this is like parenthesizing the pattern and then surrounding it with ^ and $.
-y
Equivalent to -i. Obsoleted.
-y
Obsolete synonym for -i.
-Z, -z, --decompress
Force grep to behave as zgrep.
-z, --null-data
Treat input and output data as sequences of lines, each terminated by a zero byte (the ASCII NUL character) instead of a newline. Like the -Z or --null option, this option can be used with commands like sort -z to process arbitrary file names.
--binary-files=value
Controls searching and printing of binary files. Options are binary, the default: search binary files but do not print them; without-match: do not search binary files; and text: treat all files as text.
--binary-files=TYPE
If a file's data or metadata indicate that the file contains binary data, assume that the file is of type TYPE. Non-text bytes indicate binary data; these are either output bytes that are improperly encoded for the current locale, or null input bytes when the -z option is not given.

By default, TYPE is binary, and grep suppresses output after null input binary data is discovered, and suppresses output lines that contain improperly encoded data. When some output is suppressed, grep follows any output with a one-line message saying that a binary file matches.

If TYPE is without-match, when grep discovers null input binary data it assumes that the rest of the file does not match; this is equivalent to the -I option.

If TYPE is text, grep processes a binary file as if it were text; this is equivalent to the -a option.

When type is binary, grep may treat non-text bytes as line terminators even without the -z option. This means choosing binary versus text can affect whether a pattern matches a file. For example, when type is binary the pattern q$ might match q immediately followed by a null byte, even though this is not matched when type is text. Conversely, when type is binary the pattern . (period) might not match a null byte.

Warning: The -a option might output binary garbage, which can have nasty side effects if the output is a terminal and if the terminal driver interprets some of it as commands. On the other hand, when reading files whose text encodings are unknown, it can be helpful to use -a or to set LC_ALL='C' in the environment, in order to find more matches even if the matches are unsafe for direct display.
--context[=num]
Print num lines of leading and trailing context. The default is 2.
--line-buffered
Force output to be line buffered. By default, output is line buffered when standard output is a terminal and block buffered otherwise.
--line-buffered
Use line buffering on output. This can cause a performance penalty.
-i, --ignore-case
Ignore case distinctions in patterns and input data, so that characters that differ only in case match each other.
--no-ignore-case
Do not ignore case distinctions in patterns and input data. This is the default. This option is useful for passing to shell scripts that already use -i, to cancel its effects because the two options override each other.
--label=LABEL
Display input actually coming from standard input as input coming from file LABEL. This can be useful for commands that transform a file's contents before searching, e.g., gzip -cd foo.gz |grep --label=foo -H 'some pattern'. See also the -H
--perl-regexp
Interpret PATTERNS as Perl-compatible regular expressions (PCREs). This option is experimental when combined with the -z (--null-data) option, and grep -P may warn of unimplemented features.
-T, --initial-tab
Make sure that the first character of actual line content lies on a tab stop, so that the alignment of tabs looks normal.
This is useful with options that prefix their output to the actual content: -H,-n, and -b. In order to improve the probability that lines from a single file will all start at the same column, this also causes the line number and byte offset (if present) to be printed in a minimum size field width.
-u, --unix-byte-offsets
Report Unix-style byte offsets. This switch causes grep to report byte offsets as if the file were a Unix-style text file, i.e., with CR characters stripped off. This will produce results identical to running grep on a Unix machine. This option has no effect unless -b option is also used; it has no effect on platforms other than MS-DOS and MS-Windows.

Dernière mise à jour: July 27, 2021