GNU Grep 2.9
Table of Contents
grep
grep prints lines that match a pattern.
This manual is for version 2.9 of GNU Grep.
This manual is for grep, a pattern matching engine.
Copyright © 1999-2002, 2005, 2008-2011 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this documentunder the terms of the GNU Free Documentation License, Version 1.3 orany later version published by the Free Software Foundation; with noInvariant Sections, with no Front-Cover Texts, and with no Back-CoverTexts. A copy of the license is included in the section entitled“GNU Free Documentation License”.
1 Introduction
grep searches the input filesfor lines containing a match to a given pattern list. When it finds a match in a line,it copies the line to standard output (by default),or produces whatever other sort of output you have requested with options.
Though grep expects to do the matching on text,it has no limits on input line length other than available memory,and it can match arbitrary characters within a line. If the final byte of an input file is not a newline,grep silently supplies one. Since newline is also a separator for the list of patterns,there is no way to match newline characters in a text.
2 Invoking grep
The general synopsis of the grep command line is
grep options pattern input_file_names
There can be zero or more options. pattern will only be seen as such(and not as aninput_file_name)if it wasn't already specified within options(by using the ‘-epattern’or ‘-f file’ options). There can be zero or moreinput_file_names.
2.1 Command-line Options
grep comes with a rich set of options:some fromposix.2 and some being gnu extensions. Long option names are always agnu extension,even for options that are from posix specifications. Options that are specified by posix,under their short names,are explicitly marked as suchto facilitateposix-portable programming. A few option names are providedfor compatibility with older or more exotic implementations.
Several additional options controlwhich variant of the grep matching engine is used. Seegrep Programs.
2.1.1 Generic Program Information
-
‘
--help’
-
Print a usage message briefly summarizing the command-line optionsand the bug-reporting address, then exit.
‘
-V’
‘
--version’
- Print the version number of grep to the standard output stream. This version number should be included in all bug reports.
2.1.2 Matching Control
-
‘
-e pattern’
‘
--regexp=pattern’
-
Use
pattern as the pattern. This can be used to specify multiple search patterns,or to protect a pattern beginning with a ‘
-’. (‘
-e’ is specified by
posix.)
‘
-f file’
‘
--file=file’
-
Obtain patterns from
file, one per line. The empty file contains zero patterns, and therefore matches nothing. (‘
-f’ is specified by
posix.)
‘
-i’
‘
-y’
‘
--ignore-case’
-
Ignore case distinctions in both the pattern and the input files. ‘
-y’ is an obsolete synonym that is provided for compatibility. (‘
-i’ is specified by
posix.)
‘
-v’
‘
--invert-match’
-
Invert the sense of matching, to select non-matching lines. (‘
-v’ is specified by
posix.)
‘
-w’
‘
--word-regexp’
-
Select only those lines containing matches that form whole words. The test is that the matching substring must eitherbe at the beginning of the line,or preceded by a non-word constituent character. Similarly,it must be either at the end of the lineor followed by a non-word constituent character. Word-constituent characters are letters, digits, and the underscore.
‘
-x’
‘
--line-regexp’
- Select only those matches that exactly match the whole line. (‘ -x’ is specified by posix.)
2.1.3 General Output Control
-
‘
-c’
‘
--count’
-
Suppress normal output;instead print a count of matching lines for each input file. With the ‘
-v’, ‘
--invert-match’ option,count non-matching lines. (‘
-c’ is specified by
posix.)
‘
--color[=WHEN]’
‘
--colour[=WHEN]’
-
Surround the matched (non-empty) strings, matching lines, context lines,file names, line numbers, byte offsets, and separators (for fields andgroups of context lines) with escape sequences to display them in coloron the terminal. The colors are defined by the environment variable
GREP_COLORSand default to ‘
ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36’for bold red matched text, magenta file names, green line numbers,green byte offsets, cyan separators, and default terminal colors otherwise. The deprecated environment variable
GREP_COLOR is still supported,but its setting does not have priority;it defaults to `01;31' (bold red)which only covers the color for matched text.
WHEN is ‘
never’, ‘
always’, or ‘
auto’.
‘
-L’
‘
--files-without-match’
-
Suppress normal output;instead print the name of each input file from whichno output would normally have been printed. The scanning of every file will stop on the first match.
‘
-l’
‘
--files-with-matches’
-
Suppress normal output;instead print the name of each input file from whichoutput would normally have been printed. The scanning of every file will stop on the first match. (‘
-l’ is specified by
posix.)
‘
-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 positionedjust after the last matching line before exiting,regardless of the presence of trailing context lines. This enables a calling process to resume a search. For example, the following shell script makes use of it:
while grep -m 1 PATTERN do echo xxxx done < FILE
But the following probably will not work because a pipe is not a regularfile:
# This probably will not work. cat FILE | while grep -m 1 PATTERN do echo xxxx done
When grep stops after num matching lines,it outputs any trailing context lines. Since context does not include matching lines,grep will stop when it encounters another matching line. When the ‘-c’ or ‘--count’ option is also used,grep does not output a count greater thannum. When the ‘-v’ or ‘--invert-match’ option is also used,grep stops after outputtingnum non-matching lines.
‘
-o’
‘
--only-matching’
-
Print only the matched (non-empty) parts of matching lines,with each such part on a separate output line.
‘
-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. (‘
-q’ is specified by
posix.)
‘
-s’
‘
--no-messages’
- Suppress error messages about nonexistent or unreadable files. Portability note:unlike gnu grep,7th Edition Unix grep did not conform to posix,because it lacked ‘ -q’and its ‘ -s’ option behaved like gnu grep's ‘ -q’ option. usg-style grep also lacked ‘ -q’but its ‘ -s’ option behaved like gnu grep's. Portable shell scripts should avoid both‘ -q’ and ‘ -s’ and should redirectstandard and error output to /dev/null instead. (‘ -s’ is specified by posix.)
2.1.4 Output Line Prefix Control
When several prefix fields are to be output,the order is always file name, line number, and byte offset,regardless of the order in which these options were specified.
-
‘
-b’
‘
--byte-offset’
-
Print the 0-based byte offset within the input filebefore each line of output. If ‘
-o’ (‘
--only-matching’) is specified,print the offset of the matching part itself. When
grep runs on
ms-dos or
ms-Windows,the printed byte offsets depend on whetherthe ‘
-u’ (‘
--unix-byte-offsets’) option is used;see below.
‘
-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’
-
Suppress the prefixing of file names on output. This is the default when there is only one file(or only standard input) to search.
‘
--label=LABEL’
-
Display input actually coming from standard inputas input coming from file
LABEL. This isespecially useful when implementing tools like
zgrep; e.g.:
gzip -cd foo.gz | grep --label=foo -H something
‘
-n’
‘
--line-number’
-
Prefix each line of output with the 1-based line number within its input file. (‘
-n’ is specified by
posix.)
‘
-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 linesfrom 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 option causes
grep to report byte offsetsas if the file were a Unix-style text file,i.e., the byte offsets ignore the
CR
characters that were stripped. This will produce results identicalto running grep on a Unix machine. This option has no effect unless the ‘ -b’ option is also used;it has no effect on platforms other than ms-dos and ms-Windows.
‘
-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 nameinstead 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.
2.1.5 Context Line Control
Regardless of how these options are set,grep will never print any given line more than once. If the ‘-o’ or ‘--only-matching’ option is specified,these options have no effect and a warning is given upon their use.
-
‘
-A num’
‘
--after-context=num’
-
Print
num lines of trailing context after matching lines.
‘
-B num’
‘
--before-context=num’
-
Print
num lines of leading context before matching lines.
‘
-C num’
‘
-num’
‘
--context=num’
-
Print
num lines of leading and trailing output context.
‘
--group-separator=string’
-
When
-A,
-B or
-C are in use,print
string instead of ‘
--’ around disjoint groupsof lines.
‘
--no-group-separator’
- When -A, -B or -C are in use,print disjoint groups of lines adjacent to each other.
Matching lines normally use ‘:’ as a separatorbetween prefix fields and actual line content. Context (i.e., non-matching) lines use ‘-’ instead. When no context is specified,matching lines are simply output one right after another. When nonzero context is specified,lines that are adjacent in the input form a groupand are output one right after another, whilea separator appears by default between disjoint groups on a lineof its own and without any prefix. The default separatoris ‘--’, however whether to include it and its appearancecan be changed with the options above. Each group may containseveral matching lines when they are close enough to each otherthat two otherwise adjacent but divided groups connectand can just merge into a single contiguous one.
2.1.6 File and Directory Selection
-
‘
-a’
‘
--text’
- Process a binary file as if it were text;this is equivalent to the ‘ --binary-files=text’ option. ‘ --binary-files=type’
-
If the first few bytes of a file indicate that the file contains binary data,assume that the file is of type
type. By default,
type is ‘
binary’,and
grep normally outputs eithera one-line message saying that a binary file matches,or no message if there is no match. If
type is ‘
without-match’,
grep assumes that a binary 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.
Warning: ‘
--binary-files=text’ might output binary garbage,which can have nasty side effectsif the output is a terminal andif the terminal driver interprets some of it as commands.
‘
-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, FIFOs, and sockets are silently skipped.
‘
-d action’
‘
--directories=action’
-
If an input file is a directory, use
action to process it. By default,
action is ‘
read’,which means that directories are read just as if they were ordinary files(some operating systems and file systems disallow this,and will cause
grepto print error messages for every directory or silently skip them). If
action is ‘
skip’, directories are silently skipped. If
action is ‘
recurse’,
grep reads all files under each directory, recursively;this is equivalent to the ‘
-r’ option.
‘
--exclude=glob’
-
Skip files whose base name matches
glob(using wildcard matching). A file-name glob 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 globsread from
file (using wildcard matching as describedunder ‘
--exclude’).
‘
--exclude-dir=dir’
-
Exclude directories matching the pattern
dir from recursivedirectory searches.
‘
-I’
-
Process a binary file as if it did not contain matching data;this is equivalent to the ‘
--binary-files=without-match’ option.
‘
--include=glob’
-
Search only files whose base name matches
glob(using wildcard matching as described under ‘
--exclude’).
‘
-r’
‘
-R’
‘
--recursive’
- For each directory mentioned on the command line,read and process all files in that directory, recursively. This is the same as the ‘ --directories=recurse’ option.
2.1.7 Other Options
-
‘
--line-buffered’
-
Use line buffering on output. This can cause a performance penalty.
‘
--mmap’
-
This option is ignored for backwards compatibility. It used to readinput with the
mmap
system call, instead of the defaultread
system call. On modern systems,mmap
would rarely if ever yieldbetter performance.
‘
-U’
‘
--binary’
-
Treat the file(s) as binary. By default, under
ms-dos and
ms-Windows,
grep guesses the file typeby looking at the contents of the first 32kB read from the file. 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 withCR/LF
pairs at the end of each line,this will cause some regular expressions to fail. This option has no effecton platforms other than ms-dos and ms-Windows.
‘
-z’
‘
--null-data’
-
Treat the input as a set 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.
2.2 Environment Variables
The behavior of grep is affectedby the following environment variables.
The locale for category LC_
foois specified by examining the three environment variablesLC_ALL,LC_foo, and LANG,in that order. The first of these variables that is set specifies the locale. For example, ifLC_ALL is not set,but LC_MESSAGES is set to ‘pt_BR’,then the Brazilian Portuguese locale is usedfor theLC_MESSAGES
category. The ‘C’ locale is used if none of these environment variables are set,if the locale catalog is not installed,or ifgrep was not compiledwith national language support (nls).
-
GREP_OPTIONS
-
This variable specifies default options to be placed in front of anyexplicit options. For example, if
GREP_OPTIONS
is‘ --binary-files=without-match --directories=skip’, grepbehaves as if the two options ‘ --binary-files=without-match’ and‘ --directories=skip’ had been specified beforeany explicit options. Option specifications are separated bywhitespace. A backslash escapes the next character, so it can be used tospecify an option containing whitespace or a backslash.
GREP_COLOR
-
This variable specifies the color used to highlight matched (non-empty) text. It is deprecated in favor of
GREP_COLORS
, but still supported. The ‘ mt’, ‘ ms’, and ‘ mc’ capabilities ofGREP_COLORS
have priority over it. It can only specify the color used to highlightthe matching non-empty text in any matching line(a selected line when the ‘ -v’ command-line option is omitted,or a context line when ‘ -v’ is specified). The default is ‘ 01;31’,which means a bold red foreground text on the terminal's default background.
GREP_COLORS
-
This variable specifies the colors and other attributesused to highlight various parts of the output. Its value is a colon-separated list of capabilitiesthat defaults to ‘
ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36’with the ‘
rv’ and ‘
ne’ boolean capabilities omitted (i.e., false). Supported capabilities are as follows.
-
SGR substring for whole selected lines(i.e.,matching lines when the ‘
-v’ command-line option is omitted,or non-matching lines when ‘
-v’ is specified). If however the boolean ‘
rv’ capabilityand the ‘
-v’ command-line option are both specified,it applies to context matching lines instead. The default is empty (i.e., the terminal's default color pair).
-
SGR substring for whole context lines(i.e.,non-matching lines when the ‘
-v’ command-line option is omitted,or matching lines when ‘
-v’ is specified). If however the boolean ‘
rv’ capabilityand the ‘
-v’ command-line option are both specified,it applies to selected non-matching lines instead. The default is empty (i.e., the terminal's default color pair).
-
Boolean value that reverses (swaps) the meanings ofthe ‘
sl=’ and ‘
cx=’ capabilitieswhen the ‘
-v’ command-line option is specified. The default is false (i.e., the capability is omitted).
-
SGR substring for matching non-empty text in any matching line(i.e.,a selected line when the ‘
-v’ command-line option is omitted,or a context line when ‘
-v’ is specified). Setting this is equivalent to setting both ‘
ms=’ and ‘
mc=’at once to the same value. The default is a bold red text foreground over the current line background.
-
SGR substring for matching non-empty text in a selected line. (This is only used when the ‘
-v’ command-line option is omitted.) The effect of the ‘
sl=’ (or ‘
cx=’ if ‘
rv’) capabilityremains active when this kicks in. The default is a bold red text foreground over the current line background.
-
SGR substring for matching non-empty text in a context line. (This is only used when the ‘
-v’ command-line option is specified.) The effect of the ‘
cx=’ (or ‘
sl=’ if ‘
rv’) capabilityremains active when this kicks in. The default is a bold red text foreground over the current line background.
-
SGR substring for file names prefixing any content line. The default is a magenta text foreground over the terminal's default background.
-
SGR substring for line numbers prefixing any content line. The default is a green text foreground over the terminal's default background.
-
SGR substring for byte offsets prefixing any content line. The default is a green text foreground over the terminal's default background.
-
SGR substring for separators that are insertedbetween selected line fields (‘
:’),between context line fields (‘
-’),and between groups of adjacent lineswhen nonzero context is specified (‘
--’). The default is a cyan text foreground over the terminal's default background.
-
Boolean value that prevents clearing to the end of lineusing Erase in Line (EL) to Right (‘
\33[K’)each time a colorized item ends. This is needed on terminals on which EL is not supported. It is otherwise useful on terminalsfor which the
back_color_erase
(bce
) boolean terminfo capability does not apply,when the chosen highlight colors do not affect the background,or when EL is too slow or causes too much flicker. The default is false (i.e., the capability is omitted).
sl=
cx=
rv
mt=01;31
ms=01;31
mc=01;31
fn=35
ln=32
bn=32
se=36
ne
-
SGR substring for whole selected lines(i.e.,matching lines when the ‘
-v’ command-line option is omitted,or non-matching lines when ‘
-v’ is specified). If however the boolean ‘
rv’ capabilityand the ‘
-v’ command-line option are both specified,it applies to context matching lines instead. The default is empty (i.e., the terminal's default color pair).
Note that boolean capabilities have no ‘=’... part. They are omitted (i.e., false) by default and become true when specified.
See the Select Graphic Rendition (SGR) sectionin the documentation of your text terminalfor permitted values and their meaning as character attributes. These substring values are integers in decimal representationand can be concatenated with semicolons.grep takes care of assembling the resultinto a complete SGR sequence (‘\33[’...‘m’). Common values to concatenate include‘1’ for bold,‘4’ for underline,‘5’ for blink,‘7’ for inverse,‘39’ for default foreground color,‘30’ to ‘37’ for foreground colors,‘90’ to ‘97’ for 16-color mode foreground colors,‘38;5;0’ to ‘38;5;255’for 88-color and 256-color modes foreground colors,‘49’ for default background color,‘40’ to ‘47’ for background colors,‘100’ to ‘107’ for 16-color mode background colors,and ‘48;5;0’ to ‘48;5;255’for 88-color and 256-color modes background colors.
LC_COLLATE
category,which determines the collating sequenceused to interpret range expressions like ‘
[a-z]’.
LC_CTYPE
category,which determines the type of characters,e.g., which characters are whitespace.
LC_MESSAGES
category,which determines the language that
grep uses for messages. The default ‘
C’ locale uses American English messages.
POSIXLY_CORRECT
disables special handling of aninvalid bracket expression. See
invalid-bracket-expr.
POSIXLY_CORRECT
is not set.
2.3 Exit Status
Normally, the exit status is 0 if selected lines are found and 1 otherwise. But the exit status is 2 if an error occurred, unless the-q or--quiet or--silent option is used and a selected lineis found. Note, however, thatposix only mandates,for programs such as grep,cmp, and diff,that the exit status in case of error be greater than 1;it is therefore advisable, for the sake of portability,to use logic that tests for this general conditioninstead of strict equality with 2.
2.4 grep Programs
grep searches the named input files(or standard input if no files are named,or the file name - is given)for lines containing a match to the given pattern. By default,grep prints the matching lines. There are four major variants ofgrep,controlled by the following options.
-
‘
-G’
‘
--basic-regexp’
-
Interpret the pattern as a basic regular expression (BRE). This is the default.
‘
-E’
‘
--extended-regexp’
-
Interpret the pattern as an extended regular expression (ERE). (‘
-E’ is specified by
posix.)
‘
-F’
‘
--fixed-strings’
-
Interpret the pattern as a list of fixed strings, separatedby newlines, any of which is to be matched. (‘
-F’ is specified by
posix.)
‘
-P’
‘
--perl-regexp’
- Interpret the pattern as a Perl regular expression. This is highly experimental and‘ grep -P’ may warn of unimplemented features.
In addition,two variant programs egrep andfgrep are available. egrep is the same as ‘grep -E’.fgrep is the same as ‘grep -F’. Direct invocation as eitheregrep orfgrep is deprecated,but is provided to allow historical applicationsthat rely on them to run unmodified.
3 Regular Expressions
A regular expression is a pattern that describes a set of strings. Regular expressions are constructed analogously to arithmetic expressions,by using various operators to combine smaller expressions.grep understandsthree different versions of regular expression syntax:“basic,” (BRE) “extended” (ERE) and “perl”. Ingnu grep,there is no difference in available functionality between basic andextended syntaxes. In other implementations, basic regular expressions are less powerful. The following description applies to extended regular expressions;differences for basic regular expressions are summarized afterwards. Perl regular expressions give additional functionality, and aredocumented in pcresyntax(3) and pcrepattern(3), but may not beavailable on every system.
3.1 Fundamental Structure
The fundamental building blocks are the regular expressions that matcha single character. Most characters, including all letters and digits,are regular expressions that match themselves. Any meta-characterwith special meaning may be quoted by preceding it with a backslash.
A regular expression may be followed by one of severalrepetition operators:
-
‘
.’
-
The period ‘
.’ matches any single character.
‘
?’
-
The preceding item is optional and will be matched at most once.
‘
*’
-
The preceding item will be matched zero or more times.
‘
+’
-
The preceding item will be matched one or more times.
‘
{n}’
-
The preceding item is matched exactly
n times.
‘
{n,}’
-
The preceding item is matched
n or more times.
‘
{,m}’
-
The preceding item is matched at most
m times.
‘
{n,m}’
- The preceding item is matched at least n times, but not more than m times.
Two regular expressions may be concatenated;the resulting regular expressionmatches any string formed by concatenating two substringsthat respectively match the concatenated expressions.
Two regular expressions may be joined by the infix operator ‘|’;the resulting regular expressionmatches any string matching either alternalte expression.
Repetition takes precedence over concatenation,which in turn takes precedence over alternation. A whole expression may be enclosed in parenthesesto override these precedence rules and form a subexpression.
Next: The Backslash Character and Special Expressions,Previous: Fundamental Structure,Up: Regular Expressions
3.2 Character Classes and Bracket Expressions
Abracket expression is a list of characters enclosed by ‘[’ and‘]’. It matches any single character in that list;if the first character of the list is the caret ‘^’,then it matches any character not in the list. For example, the regular expression‘[0123456789]’ matches any single digit.
Within a bracket expression, a range expression consists of twocharacters separated by a hyphen. It matches any single character thatsorts between the two characters, inclusive, using the locale'scollating sequence and character set. For example, in the default Clocale, ‘[a-d]’ is equivalent to ‘[abcd]’. Many locales sortcharacters in dictionary order, and in these locales ‘[a-d]’ istypically not equivalent to ‘[abcd]’;it might be equivalent to ‘[aBbCcDd]’, for example. To obtain the traditional interpretationof bracket expressions, you can use the ‘C’ locale by setting theLC_ALL environment variable to the value ‘C’.
Finally, certain named classes of characters are predefined withinbracket expressions, as follows. Their interpretation depends on theLC_CTYPE
locale;the interpretation below is that of the ‘C’ locale,which is the default if noLC_CTYPE
locale is specified.
-
‘
[:alnum:]’
-
Alphanumeric characters:‘
[:alpha:]’ and ‘
[:digit:]’.
‘
[:alpha:]’
-
Alphabetic characters:‘
[:lower:]’ and ‘
[:upper:]’.
‘
[:blank:]’
-
Blank characters:space and tab.
‘
[:cntrl:]’
-
Control characters. In
ascii, these characters have octal codes 000through 037, and 177 (
DEL
). In other character sets, these arethe equivalent characters, if any.
‘
[:digit:]’
-
Digits:
0 1 2 3 4 5 6 7 8 9
.
‘
[:graph:]’
-
Graphical characters:‘
[:alnum:]’ and ‘
[:punct:]’.
‘
[:lower:]’
-
Lower-case letters:
a b c d e f g h i j k l m n o p q r s t u v w x y z
.
‘
[:print:]’
-
Printable characters:‘
[:alnum:]’, ‘
[:punct:]’, and space.
‘
[:punct:]’
-
Punctuation characters:
! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~
.
‘
[:space:]’
-
Space characters:tab, newline, vertical tab, form feed, carriage return, and space. See
Usage, for more discussion of matching newlines.
‘
[:upper:]’
-
Upper-case letters:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
.
‘
[:xdigit:]’
-
Hexadecimal digits:
0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f
.
If you mistakenly omit the outer brackets, and search for say, ‘[:upper:]’,GNUgrep prints a diagnostic and exits with status 2, onthe assumption that you did not intend to search for the nominallyequivalent regular expression: ‘[:epru]’. Set thePOSIXLY_CORRECT
environment variable to disable this feature.
Most meta-characters lose their special meaning inside bracket expressions.
-
‘
]’
-
ends the bracket expression if it's not the first list item. So, if you want to make the ‘
]’ character a list item,you must put it first.
‘
[.’
-
represents the open collating symbol.
‘
.]’
-
represents the close collating symbol.
‘
[=’
-
represents the open equivalence class.
‘
=]’
-
represents the close equivalence class.
‘
[:’
-
represents the open character class symbol, and should be followed by a valid character class name.
‘
:]’
-
represents the close character class symbol.
‘
-’
-
represents the range if it's not first or last in a list or the ending pointof a range.
‘
^’
- represents the characters not in the list. If you want to make the ‘ ^’character a list item, place it anywhere but first.
3.3 The Backslash Character and Special Expressions
The ‘\’ character,when followed by certain ordinary characters,takes a special meaning:
-
‘
‘\b’’
-
Match the empty string at the edge of a word.
‘
‘\B’’
-
Match the empty string provided it's not at the edge of a word.
‘
‘\<’’
-
Match the empty string at the beginning of word.
‘
‘\>’’
-
Match the empty string at the end of word.
‘
‘\w’’
-
Match word constituent, it is a synonym for ‘
[[:alnum:]]’.
‘
‘\W’’
-
Match non-word constituent, it is a synonym for ‘
[^[:alnum:]]’.
‘
‘\s’’
-
Match whitespace, it is a synonym for ‘
[[:space:]]’.
‘
‘\S’’
- Match non-whitespace, it is a synonym for ‘ [^[:space:]]’.
For example, ‘\brat\b’ matches the separate word ‘rat’,‘\Brat\B’ matches ‘crate’ but not ‘furry rat’.
Next: Back-references and Subexpressions,Previous: The Backslash Character and Special Expressions,Up: Regular Expressions
3.4 Anchoring
The caret ‘^’ and the dollar sign ‘$’ are meta-characters thatrespectively match the empty string at the beginning and end of a line.
3.5 Back-references and Subexpressions
The back-reference ‘\n’, wheren is a single digit, matchesthe substring previously matched by the nth parenthesized subexpressionof the regular expression. For example, ‘(a)\1’ matches ‘aa’. When used with alternation, if the group does not participate in the match thenthe back-reference makes the whole match fail. For example, ‘a(.)|b\1’will not match ‘ba’. When multiple regular expressions are given with‘-e’ or from a file (‘-f file’),back-references are local to each expression.
3.6 Basic vs Extended Regular Expressions
In basic regular expressions the meta-characters ‘?’, ‘+’,‘{’, ‘|’, ‘(’, and ‘)’ lose their special meaning;instead use the backslashed versions ‘\?’, ‘\+’, ‘\{’,‘\|’, ‘\(’, and ‘\)’.
Traditional egrep did not support the ‘{’ meta-character,and someegrep implementations support ‘\{’ instead, soportable scripts should avoid ‘{’ in ‘grep -E’ patterns andshould use ‘[{]’ to match a literal ‘{’.
gnu grep -E attempts to support traditional usage byassuming that ‘{’ is not special if it would be the start of aninvalid interval specification. For example, the command‘grep -E '{1'’ searches for the two-character string ‘{1’instead of reporting a syntax error in the regular expression.posix.2 allows this behavior as an extension, but portable scriptsshould avoid it.
4 Usage
Here is an example command that invokesgnu grep:
grep -i 'hello.*world' menu.h main.c
This lists all lines in the files menu.h andmain.c thatcontain the string ‘hello’ followed by the string ‘world’;this is because ‘.*’ matches zero or more characters within a line. See Regular Expressions. The ‘-i’ option causesgrepto ignore case, causing it to match the line ‘Hello, world!’, whichit would not otherwise match. SeeInvoking, for more details abouthow to invoke grep.
Here are some common questions and answers aboutgrep usage.
- How can I list just the names of matching files?
grep -l 'main' *.c
lists the names of all C files in the current directory whose contentsmention ‘main’.
- How do I search directories recursively?
grep -r 'hello' /home/gigi
searches for ‘hello’ in all filesunder the/home/gigi directory. For more control over which files are searched,usefind, grep, andxargs. For example, the following command searches only C files:
find /home/gigi -name '*.c' -print0 | xargs -0r grep -H 'hello'
This differs from the command:
grep -rH 'hello' *.c
which merely looks for ‘hello’ in all files in the currentdirectory whose names end in ‘.c’. Here the-r isprobably unnecessary, as recursion occurs only in the unlikely eventthat one of ‘.c’ files is a directory. The ‘find ...’ command line above is more similar to the command:
grep -rH --include='*.c' 'hello' /home/gigi
- What if a pattern has a leading ‘-’?
grep -e '--cut here--' *
searches for all lines matching ‘--cut here--’. Without ‘-e’,grep would attempt to parse ‘--cut here--’ as a list ofoptions.
- Suppose I want to search for a whole word, not a part of a word?
grep -w 'hello' *
searches only for instances of ‘hello’ that are entire words;it does not match ‘Othello’. For more control, use ‘\<’ and‘\>’ to match the start and end of words. For example:
grep 'hello\>' *
searches only for words ending in ‘hello’, so it matches the word‘Othello’.
- How do I output context around the matching lines?
grep -C 2 'hello' *
prints two lines of context around each matching line.
- How do I force grep to print the name of the file?
Append /dev/null:
grep 'eli' /etc/passwd /dev/null
gets you:
/etc/passwd:eli:x:2098:1000:Eli Smith:/home/eli:/bin/bash
Alternatively, use ‘-H’, which is a gnu extension:
grep -H 'eli' /etc/passwd
- Why do people use strange regular expressions on ps output?
ps -ef | grep '[c]ron'
If the pattern had been written without the square brackets, it wouldhave matched not only theps output line for cron,but also theps output line for grep. Note that on some platforms,ps limits the output to the width of the screen;grep does not have any limit on the length of a lineexcept the available memory.
- Why does grep report “Binary file matches”?
If grep listed all matching “lines” from a binary file, itwould probably generate output that is not useful, and it might evenmuck up your display. Sognu grep suppresses output fromfiles that appear to be binary files. To forcegnu grepto output lines even from files that appear to be binary, use the‘-a’ or ‘--binary-files=text’ option. To eliminate the“Binary file matches” messages, use the ‘-I’ or‘--binary-files=without-match’ option.
- Why doesn't ‘grep -lv’ print non-matching file names?
‘grep -lv’ lists the names of all files containing one or morelines that do not match. To list the names of all files that contain nomatching lines, use the ‘-L’ or ‘--files-without-match’option.
- I can do or with ‘|’, but what aboutand?
grep 'paul' /etc/motd | grep 'franc,ois'
finds all lines that contain both ‘paul’ and ‘franc,ois’.
- How can I search in both standard input and in files?
Use the special file name ‘-’:
cat /etc/passwd | grep 'alain' - /etc/motd
- How to express palindromes in a regular expression?
It can be done by using back-references;for example,a palindrome of 4 characters can be written with a BRE:
grep -w -e '\(.\)\(.\).\2\1' file
It matches the word "radar" or "civic".
Guglielmo Bondioni proposed a single REthat finds all palindromes up to 19 characters longusing 9 subexpressions and 9 back-references:
grep -E -e '^(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.?).?\9\8\7\6\5\4\3\2\1$' file
Note this is done by using gnu ERE extensions;it might not be portable to other implementations ofgrep.
- Why is this back-reference failing?
echo 'ba' | grep -E '(a)\1|b\1'
This gives no output, because the first alternate ‘(a)\1’ does not match,as there is no ‘aa’ in the input, so the ‘\1’ in the second alternatehas nothing to refer back to, meaning it will never match anything. (The second alternate in this example can only matchif the first alternate has matched—making the second one superfluous.)
- How can I match across lines?
Standard grep cannot do this, as it is fundamentally line-based. Therefore, merely using the
[:space:]
character class does notmatch newlines in the way you might expect. However, if your grep iscompiled with Perl patterns enabled, the Perl ‘s’modifier (which makes.
match newlines) can be used:printf 'foo\nbar\n' | grep -P '(?s)foo.*?bar'
With the GNU grep option
-z
(seeFile and Directory Selection), the input is terminated by null bytes. Thus,you can match newlines in the input, but the output will be the wholefile, so this is really only useful to determine if the pattern ispresent:printf 'foo\nbar\n' | grep -z -q 'foo[[:space:]]\+bar'
Failing either of those options, you need to transform the inputbefore giving it togrep, or turn to awk,sed,perl, or many other utilities that aredesigned to operate across lines.
- What do grep, fgrep, andegrep stand for?
The name grep comes from the way line editing was done on Unix. For example,ed uses the following syntaxto print a list of matching lines on the screen:
global/regular expression/print g/re/p
fgrep stands for Fixed grep;egrep stands for Extendedgrep.
5 Reporting bugs
Email bug reports to bug-grep@gnu.org,a mailing list whose web page ishttp://lists.gnu.org/mailman/listinfo/bug-grep. The Savannah bug tracker forgrep is located athttp://savannah.gnu.org/bugs/?group=grep.
5.1 Known Bugs
Large repetition counts in the ‘{n,m}’ construct may causegrep to use lots of memory. In addition, certain otherobscure regular expressions require exponential time andspace, and may cause grep to run out of memory.
Back-references are very slow, and may require exponential time.
6 Copying
GNU grep is licensed under the GNU GPL, which makes itfreesoftware.
The “free” in “free software” refers to liberty, not price. Assome GNU project advocates like to point out, think of “free speech”rather than “free beer”. In short, you have the right (freedom) torun and change grep and distribute it to other people, and—if youwant—charge money for doing either. The important restriction isthat you have to grant your recipients the same rights and impose thesame restrictions.
This general method of licensing software is sometimes calledopen source. The GNU project prefers the term “free software”for reasons outlined athttp://www.gnu.org/philosophy/open-source-misses-the-point.html.
This manual is free documentation in the same sense. Thedocumentation license is included below. The license for the programis available with the source code, or athttp://www.gnu.org/licenses/gpl.html.
6.1 GNU Free Documentation License
Copyright © 2000-2002, 2007-2008, 2010-2011 Free Software Foundation, Inc. http://fsf.org/ Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
- PREAMBLE
The purpose of this License is to make a manual, textbook, or otherfunctional and useful documentfree in the sense of freedom: toassure everyone the effective freedom to copy and redistribute it,with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a wayto get credit for their work, while not being considered responsiblefor modifications made by others.
This License is a kind of “copyleft”, which means that derivativeworks of the document must themselves be free in the same sense. Itcomplements the GNU General Public License, which is a copyleftlicense designed for free software.
We have designed this License in order to use it for manuals for freesoftware, because free software needs free documentation: a freeprogram should come with manuals providing the same freedoms that thesoftware does. But this License is not limited to software manuals;it can be used for any textual work, regardless of subject matter orwhether it is published as a printed book. We recommend this Licenseprincipally for works whose purpose is instruction or reference.
- APPLICABILITY AND DEFINITIONS
This License applies to any manual or other work, in any medium, thatcontains a notice placed by the copyright holder saying it can bedistributed under the terms of this License. Such a notice grants aworld-wide, royalty-free license, unlimited in duration, to use thatwork under the conditions stated herein. The “Document”, below,refers to any such manual or work. Any member of the public is alicensee, and is addressed as “you”. You accept the license if youcopy, modify or distribute the work in a way requiring permissionunder copyright law.
A “Modified Version” of the Document means any work containing theDocument or a portion of it, either copied verbatim, or withmodifications and/or translated into another language.
A “Secondary Section” is a named appendix or a front-matter sectionof the Document that deals exclusively with the relationship of thepublishers or authors of the Document to the Document's overallsubject (or to related matters) and contains nothing that could falldirectly within that overall subject. (Thus, if the Document is inpart a textbook of mathematics, a Secondary Section may not explainany mathematics.) The relationship could be a matter of historicalconnection with the subject or with related matters, or of legal,commercial, philosophical, ethical or political position regardingthem.
The “Invariant Sections” are certain Secondary Sections whose titlesare designated, as being those of Invariant Sections, in the noticethat says that the Document is released under this License. If asection does not fit the above definition of Secondary then it is notallowed to be designated as Invariant. The Document may contain zeroInvariant Sections. If the Document does not identify any InvariantSections then there are none.
The “Cover Texts” are certain short passages of text that are listed,as Front-Cover Texts or Back-Cover Texts, in the notice that says thatthe Document is released under this License. A Front-Cover Text maybe at most 5 words, and a Back-Cover Text may be at most 25 words.
A “Transparent” copy of the Document means a machine-readable copy,represented in a format whose specification is available to thegeneral public, that is suitable for revising the documentstraightforwardly with generic text editors or (for images composed ofpixels) generic paint programs or (for drawings) some widely availabledrawing editor, and that is suitable for input to text formatters orfor automatic translation to a variety of formats suitable for inputto text formatters. A copy made in an otherwise Transparent fileformat whose markup, or absence of markup, has been arranged to thwartor discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amountof text. A copy that is not “Transparent” is called “Opaque”.
Examples of suitable formats for Transparent copies include plainascii without markup, Texinfo input format, LaTeX inputformat,SGML or XML using a publicly availableDTD, and standard-conforming simpleHTML,PostScript or PDF designed for human modification. Examplesof transparent image formats includePNG, XCF andJPG. Opaque formats include proprietary formats that can beread and edited only by proprietary word processors,SGML orXML for which the DTD and/or processing tools arenot generally available, and the machine-generatedHTML,PostScript or PDF produced by some word processors foroutput purposes only.
The “Title Page” means, for a printed book, the title page itself,plus such following pages as are needed to hold, legibly, the materialthis License requires to appear in the title page. For works informats which do not have any title page as such, “Title Page” meansthe text near the most prominent appearance of the work's title,preceding the beginning of the body of the text.
The “publisher” means any person or entity that distributes copiesof the Document to the public.
A section “Entitled XYZ” means a named subunit of the Document whosetitle either is precisely XYZ or contains XYZ in parentheses followingtext that translates XYZ in another language. (Here XYZ stands for aspecific section name mentioned below, such as “Acknowledgements”,“Dedications”, “Endorsements”, or “History”.) To “Preserve the Title”of such a section when you modify the Document means that it remains asection “Entitled XYZ” according to this definition.
The Document may include Warranty Disclaimers next to the notice whichstates that this License applies to the Document. These WarrantyDisclaimers are considered to be included by reference in thisLicense, but only as regards disclaiming warranties: any otherimplication that these Warranty Disclaimers may have is void and hasno effect on the meaning of this License.
- VERBATIM COPYING
You may copy and distribute the Document in any medium, eithercommercially or noncommercially, provided that this License, thecopyright notices, and the license notice saying this License appliesto the Document are reproduced in all copies, and that you add no otherconditions whatsoever to those of this License. You may not usetechnical measures to obstruct or control the reading or furthercopying of the copies you make or distribute. However, you may acceptcompensation in exchange for copies. If you distribute a large enoughnumber of copies you must also follow the conditions in section 3.
You may also lend copies, under the same conditions stated above, andyou may publicly display copies.
- COPYING IN QUANTITY
If you publish printed copies (or copies in media that commonly haveprinted covers) of the Document, numbering more than 100, and theDocument's license notice requires Cover Texts, you must enclose thecopies in covers that carry, clearly and legibly, all these CoverTexts: Front-Cover Texts on the front cover, and Back-Cover Texts onthe back cover. Both covers must also clearly and legibly identifyyou as the publisher of these copies. The front cover must presentthe full title with all words of the title equally prominent andvisible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preservethe title of the Document and satisfy these conditions, can be treatedas verbatim copying in other respects.
If the required texts for either cover are too voluminous to fitlegibly, you should put the first ones listed (as many as fitreasonably) on the actual cover, and continue the rest onto adjacentpages.
If you publish or distribute Opaque copies of the Document numberingmore than 100, you must either include a machine-readable Transparentcopy along with each Opaque copy, or state in or with each Opaque copya computer-network location from which the general network-usingpublic has access to download using public-standard network protocolsa complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps,when you begin distribution of Opaque copies in quantity, to ensurethat this Transparent copy will remain thus accessible at the statedlocation until at least one year after the last time you distribute anOpaque copy (directly or through your agents or retailers) of thatedition to the public.
It is requested, but not required, that you contact the authors of theDocument well before redistributing any large number of copies, to givethem a chance to provide you with an updated version of the Document.
- MODIFICATIONS
You may copy and distribute a Modified Version of the Document underthe conditions of sections 2 and 3 above, provided that you releasethe Modified Version under precisely this License, with the ModifiedVersion filling the role of the Document, thus licensing distributionand modification of the Modified Version to whoever possesses a copyof it. In addition, you must do these things in the Modified Version:
- Use in the Title Page (and on the covers, if any) a title distinctfrom that of the Document, and from those of previous versions(which should, if there were any, be listed in the History sectionof the Document). You may use the same title as a previous versionif the original publisher of that version gives permission.
- List on the Title Page, as authors, one or more persons or entitiesresponsible for authorship of the modifications in the ModifiedVersion, together with at least five of the principal authors of theDocument (all of its principal authors, if it has fewer than five),unless they release you from this requirement.
- State on the Title page the name of the publisher of theModified Version, as the publisher.
- Preserve all the copyright notices of the Document.
- Add an appropriate copyright notice for your modificationsadjacent to the other copyright notices.
- Include, immediately after the copyright notices, a license noticegiving the public permission to use the Modified Version under theterms of this License, in the form shown in the Addendum below.
- Preserve in that license notice the full lists of Invariant Sectionsand required Cover Texts given in the Document's license notice.
- Include an unaltered copy of this License.
- Preserve the section Entitled “History”, Preserve its Title, and addto it an item stating at least the title, year, new authors, andpublisher of the Modified Version as given on the Title Page. Ifthere is no section Entitled “History” in the Document, create onestating the title, year, authors, and publisher of the Document asgiven on its Title Page, then add an item describing the ModifiedVersion as stated in the previous sentence.
- Preserve the network location, if any, given in the Document forpublic access to a Transparent copy of the Document, and likewisethe network locations given in the Document for previous versionsit was based on. These may be placed in the “History” section. You may omit a network location for a work that was published atleast four years before the Document itself, or if the originalpublisher of the version it refers to gives permission.
- For any section Entitled “Acknowledgements” or “Dedications”, Preservethe Title of the section, and preserve in the section all thesubstance and tone of each of the contributor acknowledgements and/ordedications given therein.
- Preserve all the Invariant Sections of the Document,unaltered in their text and in their titles. Section numbersor the equivalent are not considered part of the section titles.
- Delete any section Entitled “Endorsements”. Such a sectionmay not be included in the Modified Version.
- Do not retitle any existing section to be Entitled “Endorsements” orto conflict in title with any Invariant Section.
- Preserve any Warranty Disclaimers.
If the Modified Version includes new front-matter sections orappendices that qualify as Secondary Sections and contain no materialcopied from the Document, you may at your option designate some or allof these sections as invariant. To do this, add their titles to thelist of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.
You may add a section Entitled “Endorsements”, provided it containsnothing but endorsements of your Modified Version by variousparties—for example, statements of peer review or that the text hasbeen approved by an organization as the authoritative definition of astandard.
You may add a passage of up to five words as a Front-Cover Text, and apassage of up to 25 words as a Back-Cover Text, to the end of the listof Cover Texts in the Modified Version. Only one passage ofFront-Cover Text and one of Back-Cover Text may be added by (orthrough arrangements made by) any one entity. If the Document alreadyincludes a cover text for the same cover, previously added by you orby arrangement made by the same entity you are acting on behalf of,you may not add another; but you may replace the old one, on explicitpermission from the previous publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this Licensegive permission to use their names for publicity for or to assert orimply endorsement of any Modified Version.
- COMBINING DOCUMENTS
You may combine the Document with other documents released under thisLicense, under the terms defined in section 4 above for modifiedversions, provided that you include in the combination all of theInvariant Sections of all of the original documents, unmodified, andlist them all as Invariant Sections of your combined work in itslicense notice, and that you preserve all their Warranty Disclaimers.
The combined work need only contain one copy of this License, andmultiple identical Invariant Sections may be replaced with a singlecopy. If there are multiple Invariant Sections with the same name butdifferent contents, make the title of each such section unique byadding at the end of it, in parentheses, the name of the originalauthor or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list ofInvariant Sections in the license notice of the combined work.
In the combination, you must combine any sections Entitled “History”in the various original documents, forming one section Entitled“History”; likewise combine any sections Entitled “Acknowledgements”,and any sections Entitled “Dedications”. You must delete allsections Entitled “Endorsements.”
- COLLECTIONS OF DOCUMENTS
You may make a collection consisting of the Document and other documentsreleased under this License, and replace the individual copies of thisLicense in the various documents with a single copy that is included inthe collection, provided that you follow the rules of this License forverbatim copying of each of the documents in all other respects.
You may extract a single document from such a collection, and distributeit individually under this License, provided you insert a copy of thisLicense into the extracted document, and follow this License in allother respects regarding verbatim copying of that document.
- AGGREGATION WITH INDEPENDENT WORKS
A compilation of the Document or its derivatives with other separateand independent documents or works, in or on a volume of a storage ordistribution medium, is called an “aggregate” if the copyrightresulting from the compilation is not used to limit the legal rightsof the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does notapply to the other works in the aggregate which are not themselvesderivative works of the Document.
If the Cover Text requirement of section 3 is applicable to thesecopies of the Document, then if the Document is less than one half ofthe entire aggregate, the Document's Cover Texts may be placed oncovers that bracket the Document within the aggregate, or theelectronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the wholeaggregate.
- TRANSLATION
Translation is considered a kind of modification, so you maydistribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires specialpermission from their copyright holders, but you may includetranslations of some or all Invariant Sections in addition to theoriginal versions of these Invariant Sections. You may include atranslation of this License, and all the license notices in theDocument, and any Warranty Disclaimers, provided that you also includethe original English version of this License and the original versionsof those notices and disclaimers. In case of a disagreement betweenthe translation and the original version of this License or a noticeor disclaimer, the original version will prevail.
If a section in the Document is Entitled “Acknowledgements”,“Dedications”, or “History”, the requirement (section 4) to Preserveits Title (section 1) will typically require changing the actualtitle.
- TERMINATION
You may not copy, modify, sublicense, or distribute the Documentexcept as expressly provided under this License. Any attemptotherwise to copy, modify, sublicense, or distribute it is void, andwill automatically terminate your rights under this License.
However, if you cease all violation of this License, then your licensefrom a particular copyright holder is reinstated (a) provisionally,unless and until the copyright holder explicitly and finallyterminates your license, and (b) permanently, if the copyright holderfails to notify you of the violation by some reasonable means prior to60 days after the cessation.
Moreover, your license from a particular copyright holder isreinstated permanently if the copyright holder notifies you of theviolation by some reasonable means, this is the first time you havereceived notice of violation of this License (for any work) from thatcopyright holder, and you cure the violation prior to 30 days afteryour receipt of the notice.
Termination of your rights under this section does not terminate thelicenses of parties who have received copies or rights from you underthis License. If your rights have been terminated and not permanentlyreinstated, receipt of a copy of some or all of the same material doesnot give you any rights to use it.
- FUTURE REVISIONS OF THIS LICENSE
The Free Software Foundation may publish new, revised versionsof the GNU Free Documentation License from time to time. Such newversions will be similar in spirit to the present version, but maydiffer in detail to address new problems or concerns. Seehttp://www.gnu.org/copyleft/.
Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of thisLicense “or any later version” applies to it, you have the option offollowing the terms and conditions either of that specified version orof any later version that has been published (not as a draft) by theFree Software Foundation. If the Document does not specify a versionnumber of this License, you may choose any version ever published (notas a draft) by the Free Software Foundation. If the Documentspecifies that a proxy can decide which future versions of thisLicense can be used, that proxy's public statement of acceptance of aversion permanently authorizes you to choose that version for theDocument.
- RELICENSING
“Massive Multiauthor Collaboration Site” (or “MMC Site”) means anyWorld Wide Web server that publishes copyrightable works and alsoprovides prominent facilities for anybody to edit those works. Apublic wiki that anybody can edit is an example of such a server. A“Massive Multiauthor Collaboration” (or “MMC”) contained in thesite means any set of copyrightable works thus published on the MMCsite.
“CC-BY-SA” means the Creative Commons Attribution-Share Alike 3.0license published by Creative Commons Corporation, a not-for-profitcorporation with a principal place of business in San Francisco,California, as well as future copyleft versions of that licensepublished by that same organization.
“Incorporate” means to publish or republish a Document, in whole orin part, as part of another Document.
An MMC is “eligible for relicensing” if it is licensed under thisLicense, and if all works that were first published under this Licensesomewhere other than this MMC, and subsequently incorporated in wholeor in part into the MMC, (1) had no cover texts or invariant sections,and (2) were thus incorporated prior to November 1, 2008.
The operator of an MMC Site may republish an MMC contained in the siteunder CC-BY-SA on the same site at any time before August 1, 2009,provided the MMC is eligible for relicensing.
ADDENDUM: How to use this License for your documents
To use this License in a document you have written, include a copy ofthe License in the document and put the following copyright andlicense notices just after the title page:
Copyright (C) year your name. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU Free Documentation License''.
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,replace the “with...Texts.” line with this:
with the Invariant Sections being list their titles, with the Front-Cover Texts being list, and with the Back-Cover Texts being list.
If you have Invariant Sections without Cover Texts, or some othercombination of the three, merge those two alternatives to suit thesituation.
If your document contains nontrivial examples of program code, werecommend releasing these examples in parallel under your choice offree software license, such as the GNU General Public License,to permit their use in free software.
Index
*
: Fundamental Structure+
: Fundamental Structure--after-context
:Context Line Control--basic-regexp
:grep Programs--before-context
:Context Line Control--binary
: Other Options--binary-files
:File and Directory Selection--byte-offset
:Output Line Prefix Control--color
: General Output Control--colour
: General Output Control--context
: Context Line Control--count
: General Output Control--devices
: File and Directory Selection--directories
:File and Directory Selection--exclude
: File and Directory Selection--exclude-dir
:File and Directory Selection--exclude-from
:File and Directory Selection--extended-regexp
:grep Programs--file
: Matching Control--files-with-matches
:General Output Control--files-without-match
:General Output Control--fixed-strings
:grep Programs--group-separator
:Context Line Control--help
: Generic Program Information--ignore-case
:Matching Control--include
: File and Directory Selection--initial-tab
:Output Line Prefix Control--invert-match
:Matching Control--label
: Output Line Prefix Control--line-buffered
:Other Options--line-number
:Output Line Prefix Control--line-regexp
:Matching Control--max-count
: General Output Control--mmap
: Other Options--no-filename
:Output Line Prefix Control--no-messages
:General Output Control--null
: Output Line Prefix Control--null-data
:Other Options--only-matching
:General Output Control--perl-regexp
:grep Programs--quiet
: General Output Control--recursive
: File and Directory Selection--regexp=
pattern:Matching Control--silent
: General Output Control--text
: File and Directory Selection--unix-byte-offsets
:Output Line Prefix Control--version
: Generic Program Information--with-filename
:Output Line Prefix Control--word-regexp
:Matching Control-a
: File and Directory Selection-A
: Context Line Control-B
: Context Line Control-b
: Output Line Prefix Control-C
: Context Line Control-c
: General Output Control-d
: File and Directory Selection-D
: File and Directory Selection-E
: grep Programs-e
: Matching Control-F
: grep Programs-f
: Matching Control-G
: grep Programs-h
: Output Line Prefix Control-H
: Output Line Prefix Control-i
: Matching Control-l
: General Output Control-L
: General Output Control-m
: General Output Control-n
: Output Line Prefix Control-
num:Context Line Control-o
: General Output Control-P
: grep Programs-q
: General Output Control-r
: File and Directory Selection-s
: General Output Control-T
: Output Line Prefix Control-U
: Other Options-u
: Output Line Prefix Control-v
: Matching Control-V
: Generic Program Information-w
: Matching Control-x
: Matching Control-y
: Matching Control-z
: Other Options-Z
: Output Line Prefix Control.
: Fundamental Structure?
: Fundamental Structure_
N_GNU_nonoption_argv_flags_
environment variable: Environment Variables- after context: Context Line Control
alnum
character class: Character Classes and Bracket Expressionsalpha
character class: Character Classes and Bracket Expressions- alphabetic characters: Character Classes and Bracket Expressions
- alphanumeric characters: Character Classes and Bracket Expressions
- anchoring: Anchoring
- asterisk: Fundamental Structure
- back-reference: Back-references and Subexpressions
- backslash: The Backslash Character and Special Expressions
- basic regular expressions:Basic vs Extended
- before context: Context Line Control
- binary files: File and Directory Selection
- binary files,ms-dos/ms-Windows: Other Options
blank
character class: Character Classes and Bracket Expressions- blank characters: Character Classes and Bracket Expressions
bn GREP_COLORS
capability: Environment Variables- braces, first argument omitted:Fundamental Structure
- braces, one argument: Fundamental Structure
- braces, second argument omitted:Fundamental Structure
- braces, two arguments: Fundamental Structure
- bracket expression: Character Classes and Bracket Expressions
- Bugs, known: Reporting Bugs
- bugs, reporting: Reporting Bugs
- byte offset: Output Line Prefix Control
- byte offsets, onms-dos/ms-Windows: Output Line Prefix Control
- case insensitive search: Matching Control
- changing name of standard input:Output Line Prefix Control
- character class: Character Classes and Bracket Expressions
- character classes: Character Classes and Bracket Expressions
- character type: Environment Variables
- classes of characters: Character Classes and Bracket Expressions
cntrl
character class: Character Classes and Bracket Expressions- context: Context Line Control
- context lines, after match:Context Line Control
- context lines, before match:Context Line Control
- control characters: Character Classes and Bracket Expressions
- copying: Copying
- counting lines: General Output Control
cx GREP_COLORS
capability: Environment Variables- default options environment variable:Environment Variables
- device search: File and Directory Selection
digit
character class: Character Classes and Bracket Expressions- digit characters: Character Classes and Bracket Expressions
- directory search: File and Directory Selection
- dot: Fundamental Structure
- environment variables: Environment Variables
- exclude directories: File and Directory Selection
- exclude files: File and Directory Selection
- exit status: Exit Status
- FAQ about grep usage: Usage
- files which don't match: General Output Control
fn GREP_COLORS
capability: Environment Variablesgraph
character class: Character Classes and Bracket Expressions- graphic characters: Character Classes and Bracket Expressions
- grep programs:grep Programs
GREP_COLOR
environment variable: Environment VariablesGREP_COLORS
environment variable: Environment VariablesGREP_OPTIONS
environment variable: Environment Variables- group separator: Context Line Control
- hexadecimal digits: Character Classes and Bracket Expressions
- highlight markers: Environment Variables
- highlight, color, colour:General Output Control
- include files: File and Directory Selection
- interval specifications: Basic vs Extended
- invert matching: Matching Control
LANG
environment variable: Environment Variables- language of messages: Environment Variables
LC_ALL
environment variable: Environment VariablesLC_COLLATE
environment variable: Environment VariablesLC_CTYPE
environment variable: Environment VariablesLC_MESSAGES
environment variable: Environment Variables- line buffering: Other Options
- line numbering: Output Line Prefix Control
ln GREP_COLORS
capability: Environment Variableslower
character class: Character Classes and Bracket Expressions- lower-case letters: Character Classes and Bracket Expressions
- match expression at mostm times: Fundamental Structure
- match expression at most once:Fundamental Structure
- match expression fromn to m times: Fundamental Structure
- match expressionn or more times: Fundamental Structure
- match expressionn times: Fundamental Structure
- match expression one or more times:Fundamental Structure
- match expression zero or more times:Fundamental Structure
- match the whole line: Matching Control
- matching basic regular expressions:grep Programs
- matching extended regular expressions:grep Programs
- matching fixed strings: grep Programs
- matching Perl regular expressions:grep Programs
- matching whole words: Matching Control
- max-count: General Output Control
mc GREP_COLORS
capability: Environment Variables- memory mapped input: Other Options
- message language: Environment Variables
ms GREP_COLORS
capability: Environment Variables- ms-dos/ms-Windows binary files:Other Options
- ms-dos/ms-Windows byte offsets:Output Line Prefix Control
mt GREP_COLORS
capability: Environment Variables- names of matching files: General Output Control
- national language support:Environment Variables
ne GREP_COLORS
capability: Environment Variables- NLS: Environment Variables
- no filename prefix: Output Line Prefix Control
- numeric characters: Character Classes and Bracket Expressions
- only matching: General Output Control
- palindromes: Usage
- pattern from file: Matching Control
- pattern list: Matching Control
- period: Fundamental Structure
- plus sign: Fundamental Structure
POSIXLY_CORRECT
environment variable: Environment Variablesprint
character class: Character Classes and Bracket Expressions- print non-matching lines:Matching Control
- printable characters: Character Classes and Bracket Expressions
punct
character class: Character Classes and Bracket Expressions- punctuation characters: Character Classes and Bracket Expressions
- question mark: Fundamental Structure
- quiet, silent: General Output Control
- range expression: Character Classes and Bracket Expressions
- recursive search: File and Directory Selection
- regular expressions: Regular Expressions
- return status: Exit Status
rv GREP_COLORS
capability: Environment Variables- searching directory trees:File and Directory Selection
- searching for a pattern: Introduction
sl GREP_COLORS
capability: Environment Variablesspace
character class: Character Classes and Bracket Expressions- space characters: Character Classes and Bracket Expressions
- subexpression: Back-references and Subexpressions
- suppress binary data: File and Directory Selection
- suppress error messages: General Output Control
- tab-aligned content lines:Output Line Prefix Control
- translation of message language:Environment Variables
upper
character class: Character Classes and Bracket Expressions- upper-case letters: Character Classes and Bracket Expressions
- usage summary, printing: Generic Program Information
- usage, examples: Usage
- using grep, Q&A: Usage
- variants of gerp: grep Programs
- version, printing: Generic Program Information
- whitespace characters: Character Classes and Bracket Expressions
- with filename prefix: Output Line Prefix Control
xdigit
character class: Character Classes and Bracket Expressions- xdigit class: Character Classes and Bracket Expressions
- zero-terminated file names:Output Line Prefix Control
- zero-terminated lines: Other Options
{,
m}
:Fundamental Structure{
n,
m}
:Fundamental Structure{
n,}
:Fundamental Structure{
n}
:Fundamental Structure