27-07-2021
This commit is contained in:
62
docs/Linux/grep-options.md
Normal file
62
docs/Linux/grep-options.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# grep --options
|
||||
|
||||
|
||||
|
||||
| **grep (BSD)** | **grep (GNU)** |
|
||||
| ------------------------------------------------------------ | ------------------------------------------------------------ |
|
||||
| **-A** num, -**-after-context**=num<br />Print num lines of trailing context after each match. See also the **-B** and **-C** options. | **-A** NUM, **--after-context**=NUM<br/>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**<br />Treat all files as ASCII text. | **-a**, **--text**<br/>Process a binary file as if it were text; this is equivalent to the **--binary-files**=text option. |
|
||||
| **-B** num, **--before-context**=num<br />Print num lines of leading context before each match. See also the **-A** and **-C** options. | **-B** NUM, **--before-context**=NUM<br/>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**<br />The offset in bytes of a matched pattern is displayed in front of the respective matched line. | **-b**, **--byte-offset**<br/>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]<br />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<br/>Print NUM lines of output context. Places a line containing a group separator (--) between contiguous groups of matches.<br/>With the **-o** or **--only-matching** option, this has no effect and a warning is given. |
|
||||
| **-c**, **--count**<br />Only a count of selected lines is written to standard output. | **-c**, **--count**<br/>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]]<br />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]<br/>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<br />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<br/>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<br />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<br/>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**<br />Interpret pattern as an extended regular expression | **-E**, **--extended-regexp**<br/>Interpret PATTERNS as extended regular expressions (EREs, see below). |
|
||||
| **-e** pattern, **--regexp**=pattern<br />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<br/>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**<br />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<br/>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<br/>Skip files whose base name matches any of the file-name globs read from FILE (using wildcard matching as described under --exclude). |
|
||||
| **--exclude-dir**<br />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<br/>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**<br />Interpret pattern as a set of fixed strings | **-F**, **--fixed-strings**<br/>Interpret PATTERNS as fixed strings, not regular expressions. |
|
||||
| **-f** file, **--file**=file<br />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<br/>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**<br /> Interpret pattern as a basic regular expression. | **-G**, **--basic-regexp**<br/>Interpret PATTERNS as basic regular expressions (BREs, see below). This is the default. |
|
||||
| **-H**<br />Always print filename headers with output lines. | **-H**, **--with-filename**<br/>Print the file name for each match. This is the default when there is more than one file to search. |
|
||||
| **-h**, **--no-filename**<br/>Never print filename headers (i.e. filenames) with output lines. | **-h**, **--no-filename**<br/>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**<br />Print a brief help message. | **--help**<br />Output a usage message and exit. |
|
||||
| **-I**<br />Ignore binary files. This option is equivalent to **--binary-file=without-match option**. | **-I**<br />Process a binary file as if it did not contain matching data; this is equivalent to the **--binary-files=without-match option**. |
|
||||
| **--include**<br />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<br/> Search only files whose base name matches GLOB (using wildcard matching as described under **--exclude**). <br />If contradictory **--include** and **--exclude** options are given, the last matching one wins. <br />If no **--include** or **--exclude** options match, a file is included unless the first such option is **--include**. |
|
||||
| **--include-dir**<br/>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**<br/>Decompress the bzip2(1) compressed file before looking for the text. | |
|
||||
| **-L**, **--files-without-match**<br/>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<br/>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**<br/>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<br/>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**<br />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<br/>Stop reading the file after num matches. | **-m** NUM, **--max-count**=NUM<br/>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. <br />When grep stops after NUM matching lines, it outputs any trailing context lines. <br />When the **-c** or **--count** option is also used, grep does not output a count greater than NUM. <br />When the **-v** or **--invert-match** option is also used, grep stops after outputting NUM non-matching lines. |
|
||||
| **-n**, **--line-number**<br/>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**<br/>Prefix each line of output with the 1-based line number within its input file. |
|
||||
| **--null**<br />Prints a zero-byte after the file name. | **-Z**, **--null**<br/>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**<br />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**<br />Prints only the matching part of the lines. | **-o**, **--only-matching**<br />Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line. |
|
||||
| **-p**<br />If **-R** is specified, no symbolic links are followed. This is the default. | |
|
||||
| **-q**, **--quiet**, **--silent**<br/>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**<br/>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**<br/>Recursively search subdirectories listed. | **-r**, **--recursive**<br/>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**<br/>Read all files under each directory, recursively. Follow all symbolic links, unlike **-r**. |
|
||||
| **-S**<br />If **-R** is specified, all symbolic links are followed. The default is not to follow symbolic links. | |
|
||||
| **-s**, **--no-messages**<br/>Silent mode. Nonexistent and unreadable files are ignored (i.e. their error messages are suppressed). | **-s**, **--no-messages**<br/>Suppress error messages about nonexistent or unreadable files. |
|
||||
| **-U**, **--binary**<br/>Search binary files, but do not attempt to print them. | **-U**, **--binary**<br/>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). <br />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**<br/>Display version information and exit. | **-V**, **--version**<br/> Output the version number of grep and exit. |
|
||||
| **-v**, **--invert-match**<br/>Selected lines are those not matching any of the specified patterns. | **-v**, **--invert-match**<br/>Invert the sense of matching, to select non-matching lines. |
|
||||
| **-w**, **--word-regexp**<br/>The expression is searched for as a word (as if surrounded by `[[:<:]]` and `[[:>:]]`; see re_format(7)). | **-w**, **--word-regexp**<br/>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**<br/>Only input lines selected against an entire fixed string or regular expression are considered to be matching lines. | **-x**, **--line-regexp**<br/>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**<br />Equivalent to **-i**. Obsoleted. | **-y**<br />Obsolete synonym for **-i.** |
|
||||
| **-Z**, **-z**, **--decompress**<br/>Force grep to behave as zgrep. | |
|
||||
| | **-z**, **--null-data**<br/>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<br/>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<br/>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.<br/><br/>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.<br/><br/>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.<br/><br/>If TYPE is *text*, grep processes a binary file as if it were text; this is equivalent to the **-a** option.<br/><br/>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.<br/><br/><u>Warning:</u> 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]<br/>Print num lines of leading and trailing context. The default is 2. | |
|
||||
| **--line-buffered**<br/>Force output to be line buffered. By default, output is line buffered when standard output is a terminal and block buffered otherwise. | **--line-buffered**<br/>Use line buffering on output. This can cause a performance penalty. |
|
||||
| | **-i**, **--ignore-case**<br/>Ignore case distinctions in patterns and input data, so that characters that differ only in case match each other. |
|
||||
| | **--no-ignore-case**<br/>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**<br />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**<br/>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**<br/>Make sure that the first character of actual line content lies on a tab stop, so that the alignment of tabs looks normal.<br/>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**<br/>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. |
|
||||
|
||||
Reference in New Issue
Block a user