Grep: Reintroducing local modification: --only-files option
[dragonfly.git] / contrib / grep / doc / grep.1
1 .\" GNU grep man page
2 .if !\n(.g \{\
3 .       if !\w|\*(lq| \{\
4 .               ds lq ``
5 .               if \w'\(lq' .ds lq "\(lq
6 .       \}
7 .       if !\w|\*(rq| \{\
8 .               ds rq ''
9 .               if \w'\(rq' .ds rq "\(rq
10 .       \}
11 .\}
12 .ie t .ds Tx \s-1T\v'.4n'\h'-.1667'E\v'-.4n'\h'-.125'X\s0
13 . el  .ds Tx TeX
14 .de Id
15 . ds Yr \\$4
16 . substring Yr 0 3
17 . ds Mn \\$4
18 . substring Mn 5 6
19 . ds Dy \\$4
20 . substring Dy 8 9
21 . \" ISO 8601 date, complete format, extended representation
22 . ds Dt \\*(Yr-\\*(Mn-\\*(Dy
23 ..
24 .TH GREP 1 \*(Dt "GNU grep 2.7" "User Commands"
25 .hy 0
26 .
27 .SH NAME
28 grep, egrep, fgrep \- print lines matching a pattern
29 .
30 .SH SYNOPSIS
31 .B grep
32 .RI [ OPTIONS ]
33 .I PATTERN
34 .RI [ FILE .\|.\|.]
35 .br
36 .B grep
37 .RI [ OPTIONS ]
38 .RB [ \-e
39 .I PATTERN
40 |
41 .B \-f
42 .IR FILE ]
43 .RI [ FILE .\|.\|.]
44 .
45 .SH DESCRIPTION
46 .B grep
47 searches the named input
48 .IR FILE s
49 (or standard input if no files are named,
50 or if a single hyphen-minus
51 .RB ( \- )
52 is given as file name)
53 for lines containing a match to the given
54 .IR PATTERN .
55 By default,
56 .B grep
57 prints the matching lines.
58 .PP
59 In addition, two variant programs
60 .B egrep
61 and
62 .B fgrep
63 are available.
64 .B egrep
65 is the same as
66 .BR "grep\ \-E" .
67 .B fgrep
68 is the same as
69 .BR "grep\ \-F" .
70 Direct invocation as either
71 .B egrep
72 or
73 .B fgrep
74 is deprecated,
75 but is provided to allow historical applications
76 that rely on them to run unmodified.
77 .
78 .SH OPTIONS
79 .SS "Generic Program Information"
80 .TP
81 .B \-\^\-help
82 Print a usage message briefly summarizing these command-line options
83 and the bug-reporting address, then exit.
84 .TP
85 .BR \-V ", " \-\^\-version
86 Print the version number of
87 .B grep
88 to the standard output stream.
89 This version number should
90 be included in all bug reports (see below).
91 .SS "Matcher Selection"
92 .TP
93 .BR \-E ", " \-\^\-extended\-regexp
94 Interpret
95 .I PATTERN
96 as an extended regular expression (ERE, see below).
97 .RB ( \-E
98 is specified by \s-1POSIX\s0.)
99 .TP
100 .BR \-F ", " \-\^\-fixed\-strings
101 Interpret
102 .I PATTERN
103 as a list of fixed strings, separated by newlines,
104 any of which is to be matched.
105 .RB ( \-F
106 is specified by \s-1POSIX\s0.)
107 .TP
108 .BR \-G ", " \-\^\-basic\-regexp
109 Interpret
110 .I PATTERN
111 as a basic regular expression (BRE, see below).
112 This is the default.
113 .TP
114 .BR \-P ", " \-\^\-perl\-regexp
115 Interpret
116 .I PATTERN
117 as a Perl regular expression.
118 This is highly experimental and
119 .B "grep \-P"
120 may warn of unimplemented features.
121 .SS "Matching Control"
122 .TP
123 .BI \-e " PATTERN" "\fR,\fP \-\^\-regexp=" PATTERN
124 Use
125 .I PATTERN
126 as the pattern.
127 This can be used to specify multiple search patterns,
128 or to protect a pattern beginning with a hyphen
129 .RB ( \- ).
130 .RB ( \-e
131 is specified by \s-1POSIX\s0.)
132 .TP
133 .BI \-f " FILE" "\fR,\fP \-\^\-file=" FILE
134 Obtain patterns from
135 .IR FILE ,
136 one per line.
137 The empty file contains zero patterns, and therefore matches nothing.
138 .RB ( \-f
139 is specified by \s-1POSIX\s0.)
140 .TP
141 .BR \-i ", " \-\^\-ignore\-case
142 Ignore case distinctions in both the
143 .I PATTERN
144 and the input files.
145 .RB ( \-i
146 is specified by \s-1POSIX\s0.)
147 .TP
148 .BR \-v ", " \-\^\-invert\-match
149 Invert the sense of matching, to select non-matching lines.
150 .RB ( \-v
151 is specified by \s-1POSIX\s0.)
152 .TP
153 .BR \-w ", " \-\^\-word\-regexp
154 Select only those lines containing matches that form whole words.
155 The test is that the matching substring must either be at the
156 beginning of the line, or preceded by a non-word constituent
157 character.
158 Similarly, it must be either at the end of the line
159 or followed by a non-word constituent character.
160 Word-constituent characters are letters, digits, and the underscore.
161 .TP
162 .BR \-x ", " \-\^\-line\-regexp
163 Select only those matches that exactly match the whole line.
164 .RB ( \-x
165 is specified by \s-1POSIX\s0.)
166 .TP
167 .B \-y
168 Obsolete synonym for
169 .BR \-i .
170 .SS "General Output Control"
171 .TP
172 .BR \-c ", " \-\^\-count
173 Suppress normal output; instead print a count of
174 matching lines for each input file.
175 With the
176 .BR \-v ", " \-\^\-invert\-match
177 option (see below), count non-matching lines.
178 .RB ( \-c
179 is specified by \s-1POSIX\s0.)
180 .TP
181 .BR \-\^\-color [ =\fIWHEN\fP "], " \-\^\-colour [ =\fIWHEN\fP ]
182 Surround the matched (non-empty) strings, matching lines, context lines,
183 file names, line numbers, byte offsets, and separators (for fields and
184 groups of context lines) with escape sequences to display them in color
185 on the terminal.
186 The colors are defined by the environment variable
187 .BR GREP_COLORS .
188 The deprecated environment variable
189 .B GREP_COLOR
190 is still supported, but its setting does not have priority.
191 .I WHEN
192 is
193 .BR never ", " always ", or " auto .
194 .TP
195 .BR \-L ", " \-\^\-files\-without\-match
196 Suppress normal output; instead print the name
197 of each input file from which no output would
198 normally have been printed.
199 The scanning will stop on the first match.
200 .TP
201 .BR \-l ", " \-\^\-files\-with\-matches
202 Suppress normal output; instead print
203 the name of each input file from which output
204 would normally have been printed.
205 The scanning will stop on the first match.
206 .RB ( \-l
207 is specified by \s-1POSIX\s0.)
208 .TP
209 .BI \-m " NUM" "\fR,\fP \-\^\-max\-count=" NUM
210 Stop reading a file after
211 .I NUM
212 matching lines.
213 If the input is standard input from a regular file,
214 and
215 .I NUM
216 matching lines are output,
217 .B grep
218 ensures that the standard input is positioned to just after the last
219 matching line before exiting, regardless of the presence of trailing
220 context lines.
221 This enables a calling process to resume a search.
222 When
223 .B grep
224 stops after
225 .I NUM
226 matching lines, it outputs any trailing context lines.
227 When the
228 .B \-c
229 or
230 .B \-\^\-count
231 option is also used,
232 .B grep
233 does not output a count greater than
234 .IR NUM .
235 When the
236 .B \-v
237 or
238 .B \-\^\-invert\-match
239 option is also used,
240 .B grep
241 stops after outputting
242 .I NUM
243 non-matching lines.
244 .TP
245 .BR \-o ", " \-\^\-only\-matching
246 Print only the matched (non-empty) parts of a matching line,
247 with each such part on a separate output line.
248 .TP
249 .BR \-q ", " \-\^\-quiet ", " \-\^\-silent
250 Quiet; do not write anything to standard output.
251 Exit immediately with zero status if any match is found,
252 even if an error was detected.
253 Also see the
254 .B \-s
255 or
256 .B \-\^\-no\-messages
257 option.
258 .RB ( \-q
259 is specified by \s-1POSIX\s0.)
260 .TP
261 .BR \-s ", " \-\^\-no\-messages
262 Suppress error messages about nonexistent or unreadable files.
263 Portability note: unlike \s-1GNU\s0
264 .BR grep ,
265 7th Edition Unix
266 .B grep
267 did not conform to \s-1POSIX\s0, because it lacked
268 .B \-q
269 and its
270 .B \-s
271 option behaved like \s-1GNU\s0
272 .BR grep 's
273 .B \-q
274 option.
275 \s-1USG\s0-style
276 .B grep
277 also lacked
278 .B \-q
279 but its
280 .B \-s
281 option behaved like \s-1GNU\s0
282 .BR grep .
283 Portable shell scripts
284 should avoid both
285 .B \-q
286 and
287 .B \-s
288 and should redirect standard and error output to
289 .B /dev/null
290 instead.
291 .RB ( \-s
292 is specified by \s-1POSIX\s0.)
293 .SS "Output Line Prefix Control"
294 .TP
295 .BR \-b ", " \-\^\-byte\-offset
296 Print the 0-based byte offset within the input file
297 before each line of output.
298 If
299 .B \-o
300 .RB ( \-\^\-only\-matching )
301 is specified,
302 print the offset of the matching part itself.
303 .TP
304 .BR \-H ", " \-\^\-with\-filename
305 Print the file name for each match.
306 This is the default when there is more than one file to search.
307 .TP
308 .BR \-h ", " \-\^\-no\-filename
309 Suppress the prefixing of file names on output.
310 This is the default when there is only one file
311 (or only standard input) to search.
312 .TP
313 .BI \-\^\-label= LABEL
314 Display input actually coming from standard input as input coming from file
315 .IR LABEL .
316 This is especially useful when implementing tools like
317 .BR zgrep ,
318 e.g.,
319 .BR "gzip -cd foo.gz | grep --label=foo -H something" .
320 See also the
321 .B \-H
322 option.
323 .TP
324 .BR \-n ", " \-\^\-line\-number
325 Prefix each line of output with the 1-based line number
326 within its input file.
327 .RB ( \-n
328 is specified by \s-1POSIX\s0.)
329 .TP
330 .BR \-T ", " \-\^\-initial\-tab
331 Make sure that the first character of actual line content lies on a
332 tab stop, so that the alignment of tabs looks normal.
333 This is useful with options that prefix their output to the actual content:
334 .BR \-H , \-n ,
335 and
336 .BR \-b .
337 In order to improve the probability that lines
338 from a single file will all start at the same column,
339 this also causes the line number and byte offset (if present)
340 to be printed in a minimum size field width.
341 .TP
342 .BR \-u ", " \-\^\-unix\-byte\-offsets
343 Report Unix-style byte offsets.
344 This switch causes
345 .B grep
346 to report byte offsets as if the file were a Unix-style text file,
347 i.e., with CR characters stripped off.
348 This will produce results identical to running
349 .B grep
350 on a Unix machine.
351 This option has no effect unless
352 .B \-b
353 option is also used;
354 it has no effect on platforms other than \s-1MS-DOS\s0 and \s-1MS\s0-Windows.
355 .TP
356 .BR \-Z ", " \-\^\-null
357 Output a zero byte (the \s-1ASCII\s0
358 .B NUL
359 character) instead of the character that normally follows a file name.
360 For example,
361 .B "grep \-lZ"
362 outputs a zero byte after each file name instead of the usual newline.
363 This option makes the output unambiguous, even in the presence of file
364 names containing unusual characters like newlines.
365 This option can be used with commands like
366 .BR "find \-print0" ,
367 .BR "perl \-0" ,
368 .BR "sort \-z" ,
369 and
370 .B "xargs \-0"
371 to process arbitrary file names,
372 even those that contain newline characters.
373 .SS "Context Line Control"
374 .TP
375 .BI \-A " NUM" "\fR,\fP \-\^\-after\-context=" NUM
376 Print
377 .I NUM
378 lines of trailing context after matching lines.
379 Places a line containing a group separator
380 .RB ( \-\^\- )
381 between contiguous groups of matches.
382 With the
383 .B \-o
384 or
385 .B \-\^\-only\-matching
386 option, this has no effect and a warning is given.
387 .TP
388 .BI \-B " NUM" "\fR,\fP \-\^\-before\-context=" NUM
389 Print
390 .I NUM
391 lines of leading context before matching lines.
392 Places a line containing a group separator
393 .RB ( \-\^\- )
394 between contiguous groups of matches.
395 With the
396 .B \-o
397 or
398 .B \-\^\-only\-matching
399 option, this has no effect and a warning is given.
400 .TP
401 .BI \-C " NUM" "\fR,\fP \-" NUM "\fR,\fP \-\^\-context=" NUM
402 Print
403 .I NUM
404 lines of output context.
405 Places a line containing a group separator
406 .RB ( \-\^\- )
407 between contiguous groups of matches.
408 With the
409 .B \-o
410 or
411 .B \-\^\-only\-matching
412 option, this has no effect and a warning is given.
413 .SS "File and Directory Selection"
414 .TP
415 .BR \-a ", " \-\^\-text
416 Process a binary file as if it were text; this is equivalent to the
417 .B \-\^\-binary\-files=text
418 option.
419 .TP
420 .BI \-\^\-binary\-files= TYPE
421 If the first few bytes of a file indicate that the file contains binary
422 data, assume that the file is of type
423 .IR TYPE .
424 By default,
425 .I TYPE
426 is
427 .BR binary ,
428 and
429 .B grep
430 normally outputs either
431 a one-line message saying that a binary file matches, or no message if
432 there is no match.
433 If
434 .I TYPE
435 is
436 .BR without-match ,
437 .B grep
438 assumes that a binary file does not match; this is equivalent to the
439 .B \-I
440 option.
441 If
442 .I TYPE
443 is
444 .BR text ,
445 .B grep
446 processes a binary file as if it were text; this is equivalent to the
447 .B \-a
448 option.
449 .I Warning:
450 .B "grep \-\^\-binary\-files=text"
451 might output binary garbage,
452 which can have nasty side effects if the output is a terminal and if the
453 terminal driver interprets some of it as commands.
454 .TP
455 .BI \-D " ACTION" "\fR,\fP \-\^\-devices=" ACTION
456 If an input file is a device, FIFO or socket, use
457 .I ACTION
458 to process it.
459 By default,
460 .I ACTION
461 is
462 .BR read ,
463 which means that devices are read just as if they were ordinary files.
464 If
465 .I ACTION
466 is
467 .BR skip ,
468 devices are silently skipped.
469 .TP
470 .BI \-d " ACTION" "\fR,\fP \-\^\-directories=" ACTION
471 If an input file is a directory, use
472 .I ACTION
473 to process it.
474 By default,
475 .I ACTION
476 is
477 .BR read ,
478 which means that directories are read just as if they were ordinary files.
479 If
480 .I ACTION
481 is
482 .BR skip ,
483 directories are silently skipped.
484 If
485 .I ACTION
486 is
487 .BR recurse ,
488 .B grep
489 reads all files under each directory, recursively;
490 this is equivalent to the
491 .B \-r
492 option.
493 .TP
494 .BI \-\^\-exclude= GLOB
495 Skip files whose base name matches
496 .I GLOB
497 (using wildcard matching).
498 A file-name glob can use
499 .BR * ,
500 .BR ? ,
501 and
502 .BR [ ... ]
503 as wildcards, and
504 .B \e
505 to quote a wildcard or backslash character literally.
506 .TP
507 .BI \-\^\-exclude-from= FILE
508 Skip files whose base name matches any of the file-name globs read from
509 .I FILE
510 (using wildcard matching as described under
511 .BR \-\^\-exclude ).
512 .TP
513 .BI \-\^\-exclude-dir= DIR
514 Exclude directories matching the pattern
515 .I DIR
516 from recursive searches.
517 .TP
518 .BR \-I
519 Process a binary file as if it did not contain matching data; this is
520 equivalent to the
521 .B \-\^\-binary\-files=without-match
522 option.
523 .TP
524 .BI \-\^\-include= GLOB
525 Search only files whose base name matches
526 .I GLOB
527 (using wildcard matching as described under
528 .BR \-\^\-exclude ).
529 .TP
530 .BR \-R ", " \-r ", " \-\^\-recursive
531 Read all files under each directory, recursively;
532 this is equivalent to the
533 .B "\-d recurse"
534 option.
535 .SS "Other Options"
536 .TP
537 .BR \-O ", " \-\^\-only-files
538 Ignore all special files, except for symlinks. Yet, when recursing
539 into directories, ignore symlinked directories as well.
540 .TP
541 .BR \-\^\-line\-buffered
542 Use line buffering on output.
543 This can cause a performance penalty.
544 .TP
545 .B \-\^\-mmap
546 If possible, use the
547 .BR mmap (2)
548 system call to read input, instead of
549 the default
550 .BR read (2)
551 system call.
552 In some situations,
553 .B \-\^\-mmap
554 yields better performance.
555 However,
556 .B \-\^\-mmap
557 can cause undefined behavior (including core dumps)
558 if an input file shrinks while
559 .B grep
560 is operating, or if an I/O error occurs.
561 .TP
562 .BR \-U ", " \-\^\-binary
563 Treat the file(s) as binary.
564 By default, under \s-1MS-DOS\s0 and \s-1MS\s0-Windows,
565 .BR grep
566 guesses the file type by looking at the contents of the first 32KB
567 read from the file.
568 If
569 .BR grep
570 decides the file is a text file, it strips the CR characters from the
571 original file contents (to make regular expressions with
572 .B ^
573 and
574 .B $
575 work correctly).
576 Specifying
577 .B \-U
578 overrules this guesswork, causing all files to be read and passed to the
579 matching mechanism verbatim; if the file is a text file with CR/LF
580 pairs at the end of each line, this will cause some regular
581 expressions to fail.
582 This option has no effect on platforms
583 other than \s-1MS-DOS\s0 and \s-1MS\s0-Windows.
584 .TP
585 .BR \-z ", " \-\^\-null\-data
586 Treat the input as a set of lines,
587 each terminated by a zero byte (the \s-1ASCII\s0
588 .B NUL
589 character) instead of a newline.
590 Like the
591 .B -Z
592 or
593 .B \-\^\-null
594 option, this option can be used with commands like
595 .B sort -z
596 to process arbitrary file names.
597 .
598 .SH "REGULAR EXPRESSIONS"
599 A regular expression is a pattern that describes a set of strings.
600 Regular expressions are constructed analogously to arithmetic
601 expressions, by using various operators to combine smaller expressions.
602 .PP
603 .B grep
604 understands three different versions of regular expression syntax:
605 \*(lqbasic,\*(rq \*(lqextended\*(rq and \*(lqperl.\*(rq In
606 .RB "\s-1GNU\s0\ " grep ,
607 there is no difference in available functionality between basic and
608 extended syntaxes.
609 In other implementations, basic regular expressions are less powerful.
610 The following description applies to extended regular expressions;
611 differences for basic regular expressions are summarized afterwards.
612 Perl regular expressions give additional functionality, and are
613 documented in pcresyntax(3) and pcrepattern(3), but may not be
614 available on every system.
615 .PP
616 The fundamental building blocks are the regular expressions
617 that match a single character.
618 Most characters, including all letters and digits,
619 are regular expressions that match themselves.
620 Any meta-character with special meaning
621 may be quoted by preceding it with a backslash.
622 .PP
623 The period
624 .B .\&
625 matches any single character.
626 .SS "Character Classes and Bracket Expressions"
627 A
628 .I "bracket expression"
629 is a list of characters enclosed by
630 .B [
631 and
632 .BR ] .
633 It matches any single
634 character in that list; if the first character of the list
635 is the caret
636 .B ^
637 then it matches any character
638 .I not
639 in the list.
640 For example, the regular expression
641 .B [0123456789]
642 matches any single digit.
643 .PP
644 Within a bracket expression, a
645 .I "range expression"
646 consists of two characters separated by a hyphen.
647 It matches any single character that sorts between the two characters,
648 inclusive, using the locale's collating sequence and character set.
649 For example, in the default C locale,
650 .B [a\-d]
651 is equivalent to
652 .BR [abcd] .
653 Many locales sort characters in dictionary order, and in these locales
654 .B [a\-d]
655 is typically not equivalent to
656 .BR [abcd] ;
657 it might be equivalent to
658 .BR [aBbCcDd] ,
659 for example.
660 To obtain the traditional interpretation of bracket expressions,
661 you can use the C locale by setting the
662 .B LC_ALL
663 environment variable to the value
664 .BR C .
665 .PP
666 Finally, certain named classes of characters are predefined within
667 bracket expressions, as follows.
668 Their names are self explanatory, and they are
669 .BR [:alnum:] ,
670 .BR [:alpha:] ,
671 .BR [:cntrl:] ,
672 .BR [:digit:] ,
673 .BR [:graph:] ,
674 .BR [:lower:] ,
675 .BR [:print:] ,
676 .BR [:punct:] ,
677 .BR [:space:] ,
678 .BR [:upper:] ,
679 and
680 .BR [:xdigit:].
681 For example,
682 .B [[:alnum:]]
683 means
684 .BR [0\-9A\-Za\-z] ,
685 except the latter form depends upon the C locale and the
686 \s-1ASCII\s0 character encoding, whereas the former is independent
687 of locale and character set.
688 (Note that the brackets in these class names are part of the symbolic
689 names, and must be included in addition to the brackets delimiting
690 the bracket expression.)
691 Most meta-characters lose their special meaning inside bracket expressions.
692 To include a literal
693 .B ]
694 place it first in the list.
695 Similarly, to include a literal
696 .B ^
697 place it anywhere but first.
698 Finally, to include a literal
699 .B \-
700 place it last.
701 .SS Anchoring
702 The caret
703 .B ^
704 and the dollar sign
705 .B $
706 are meta-characters that respectively match the empty string at the
707 beginning and end of a line.
708 .SS "The Backslash Character and Special Expressions"
709 The symbols
710 .B \e<
711 and
712 .B \e>
713 respectively match the empty string at the beginning and end of a word.
714 The symbol
715 .B \eb
716 matches the empty string at the edge of a word,
717 and
718 .B \eB
719 matches the empty string provided it's
720 .I not
721 at the edge of a word.
722 The symbol
723 .B \ew
724 is a synonym for
725 .B [[:alnum:]]
726 and
727 .B \eW
728 is a synonym for
729 .BR [^[:alnum:]] .
730 .SS Repetition
731 A regular expression may be followed by one of several repetition operators:
732 .PD 0
733 .TP
734 .B ?
735 The preceding item is optional and matched at most once.
736 .TP
737 .B *
738 The preceding item will be matched zero or more times.
739 .TP
740 .B +
741 The preceding item will be matched one or more times.
742 .TP
743 .BI { n }
744 The preceding item is matched exactly
745 .I n
746 times.
747 .TP
748 .BI { n ,}
749 The preceding item is matched
750 .I n
751 or more times.
752 .TP
753 .BI {, m }
754 The preceding item is matched at most
755 .I m
756 times.
757 .TP
758 .BI { n , m }
759 The preceding item is matched at least
760 .I n
761 times, but not more than
762 .I m
763 times.
764 .PD
765 .SS Concatenation
766 Two regular expressions may be concatenated; the resulting
767 regular expression matches any string formed by concatenating
768 two substrings that respectively match the concatenated
769 expressions.
770 .SS Alternation
771 Two regular expressions may be joined by the infix operator
772 .BR | ;
773 the resulting regular expression matches any string matching
774 either alternate expression.
775 .SS Precedence
776 Repetition takes precedence over concatenation, which in turn
777 takes precedence over alternation.
778 A whole expression may be enclosed in parentheses
779 to override these precedence rules and form a subexpression.
780 .SS "Back References and Subexpressions"
781 The back-reference
782 .BI \e n\c
783 \&, where
784 .I n
785 is a single digit, matches the substring
786 previously matched by the
787 .IR n th
788 parenthesized subexpression of the regular expression.
789 .SS "Basic vs Extended Regular Expressions"
790 In basic regular expressions the meta-characters
791 .BR ? ,
792 .BR + ,
793 .BR { ,
794 .BR | ,
795 .BR ( ,
796 and
797 .BR )
798 lose their special meaning; instead use the backslashed
799 versions
800 .BR \e? ,
801 .BR \e+ ,
802 .BR \e{ ,
803 .BR \e| ,
804 .BR \e( ,
805 and
806 .BR \e) .
807 .PP
808 Traditional
809 .B egrep
810 did not support the
811 .B {
812 meta-character, and some
813 .B egrep
814 implementations support
815 .B \e{
816 instead, so portable scripts should avoid
817 .B {
818 in
819 .B "grep\ \-E"
820 patterns and should use
821 .B [{]
822 to match a literal
823 .BR { .
824 .PP
825 \s-1GNU\s0
826 .B "grep\ \-E"
827 attempts to support traditional usage by assuming that
828 .B {
829 is not special if it would be the start of an invalid interval
830 specification.
831 For example, the command
832 .B "grep\ \-E\ '{1'"
833 searches for the two-character string
834 .B {1
835 instead of reporting a syntax error in the regular expression.
836 \s-1POSIX.2\s0 allows this behavior as an extension, but portable scripts
837 should avoid it.
838 .
839 .SH "ENVIRONMENT VARIABLES"
840 The behavior of
841 .B grep
842 is affected by the following environment variables.
843 .PP
844 The locale for category
845 .BI LC_ foo
846 is specified by examining the three environment variables
847 .BR LC_ALL ,
848 .BR LC_\fIfoo\fP ,
849 .BR LANG ,
850 in that order.
851 The first of these variables that is set specifies the locale.
852 For example, if
853 .B LC_ALL
854 is not set, but
855 .B LC_MESSAGES
856 is set to
857 .BR pt_BR ,
858 then the Brazilian Portuguese locale is used for the
859 .B LC_MESSAGES
860 category.
861 The C locale is used if none of these environment variables are set,
862 if the locale catalog is not installed, or if
863 .B grep
864 was not compiled with national language support (\s-1NLS\s0).
865 .TP
866 .B GREP_OPTIONS
867 This variable specifies default options
868 to be placed in front of any explicit options.
869 For example, if
870 .B GREP_OPTIONS
871 is
872 .BR "'\-\^\-binary-files=without-match \-\^\-directories=skip'" ,
873 .B grep
874 behaves as if the two options
875 .B \-\^\-binary\-files=without-match
876 and
877 .B \-\^\-directories=skip
878 had been specified before any explicit options.
879 Option specifications are separated by whitespace.
880 A backslash escapes the next character,
881 so it can be used to specify an option containing whitespace or a backslash.
882 .TP
883 .B GREP_COLOR
884 This variable specifies the color used to highlight matched (non-empty) text.
885 It is deprecated in favor of
886 .BR GREP_COLORS ,
887 but still supported.
888 The
889 .BR mt ,
890 .BR ms ,
891 and
892 .B mc
893 capabilities of
894 .B GREP_COLORS
895 have priority over it.
896 It can only specify the color used to highlight
897 the matching non-empty text in any matching line
898 (a selected line when the
899 .B -v
900 command-line option is omitted,
901 or a context line when
902 .B -v
903 is specified).
904 The default is
905 .BR 01;31 ,
906 which means a bold red foreground text on the terminal's default background.
907 .TP
908 .B GREP_COLORS
909 Specifies the colors and other attributes
910 used to highlight various parts of the output.
911 Its value is a colon-separated list of capabilities
912 that defaults to
913 .B ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36
914 with the
915 .B rv
916 and
917 .B ne
918 boolean capabilities omitted (i.e., false).
919 Supported capabilities are as follows.
920 .RS
921 .TP
922 .B sl=
923 SGR substring for whole selected lines
924 (i.e.,
925 matching lines when the
926 .B \-v
927 command-line option is omitted,
928 or non-matching lines when
929 .B \-v
930 is specified).
931 If however the boolean
932 .B rv
933 capability
934 and the
935 .B \-v
936 command-line option are both specified,
937 it applies to context matching lines instead.
938 The default is empty (i.e., the terminal's default color pair).
939 .TP
940 .B cx=
941 SGR substring for whole context lines
942 (i.e.,
943 non-matching lines when the
944 .B \-v
945 command-line option is omitted,
946 or matching lines when
947 .B \-v
948 is specified).
949 If however the boolean
950 .B rv
951 capability
952 and the
953 .B \-v
954 command-line option are both specified,
955 it applies to selected non-matching lines instead.
956 The default is empty (i.e., the terminal's default color pair).
957 .TP
958 .B rv
959 Boolean value that reverses (swaps) the meanings of
960 the
961 .B sl=
962 and
963 .B cx=
964 capabilities
965 when the
966 .B \-v
967 command-line option is specified.
968 The default is false (i.e., the capability is omitted).
969 .TP
970 .B mt=01;31
971 SGR substring for matching non-empty text in any matching line
972 (i.e.,
973 a selected line when the
974 .B \-v
975 command-line option is omitted,
976 or a context line when
977 .B \-v
978 is specified).
979 Setting this is equivalent to setting both
980 .B ms=
981 and
982 .B mc=
983 at once to the same value.
984 The default is a bold red text foreground over the current line background.
985 .TP
986 .B ms=01;31
987 SGR substring for matching non-empty text in a selected line.
988 (This is only used when the
989 .B \-v
990 command-line option is omitted.)
991 The effect of the
992 .B sl=
993 (or
994 .B cx=
995 if
996 .BR rv )
997 capability remains active when this kicks in.
998 The default is a bold red text foreground over the current line background.
999 .TP
1000 .B mc=01;31
1001 SGR substring for matching non-empty text in a context line.
1002 (This is only used when the
1003 .B \-v
1004 command-line option is specified.)
1005 The effect of the
1006 .B cx=
1007 (or
1008 .B sl=
1009 if
1010 .BR rv )
1011 capability remains active when this kicks in.
1012 The default is a bold red text foreground over the current line background.
1013 .TP
1014 .B fn=35
1015 SGR substring for file names prefixing any content line.
1016 The default is a magenta text foreground over the terminal's default background.
1017 .TP
1018 .B ln=32
1019 SGR substring for line numbers prefixing any content line.
1020 The default is a green text foreground over the terminal's default background.
1021 .TP
1022 .B bn=32
1023 SGR substring for byte offsets prefixing any content line.
1024 The default is a green text foreground over the terminal's default background.
1025 .TP
1026 .B se=36
1027 SGR substring for separators that are inserted
1028 between selected line fields
1029 .RB ( : ),
1030 between context line fields,
1031 .RB ( \- ),
1032 and between groups of adjacent lines when nonzero context is specified
1033 .RB ( \-\^\- ).
1034 The default is a cyan text foreground over the terminal's default background.
1035 .TP
1036 .B ne
1037 Boolean value that prevents clearing to the end of line
1038 using Erase in Line (EL) to Right
1039 .RB ( \\\\\\33[K )
1040 each time a colorized item ends.
1041 This is needed on terminals on which EL is not supported.
1042 It is otherwise useful on terminals
1043 for which the
1044 .B back_color_erase
1045 .RB ( bce )
1046 boolean terminfo capability does not apply,
1047 when the chosen highlight colors do not affect the background,
1048 or when EL is too slow or causes too much flicker.
1049 The default is false (i.e., the capability is omitted).
1050 .PP
1051 Note that boolean capabilities have no
1052 .BR = ...
1053 part.
1054 They are omitted (i.e., false) by default and become true when specified.
1055 .PP
1056 See the Select Graphic Rendition (SGR) section
1057 in the documentation of the text terminal that is used
1058 for permitted values and their meaning as character attributes.
1059 These substring values are integers in decimal representation
1060 and can be concatenated with semicolons.
1061 .B grep
1062 takes care of assembling the result
1063 into a complete SGR sequence
1064 .RB ( \\\\\\33[ ... m ).
1065 Common values to concatenate include
1066 .B 1
1067 for bold,
1068 .B 4
1069 for underline,
1070 .B 5
1071 for blink,
1072 .B 7
1073 for inverse,
1074 .B 39
1075 for default foreground color,
1076 .B 30
1077 to
1078 .B 37
1079 for foreground colors,
1080 .B 90
1081 to
1082 .B 97
1083 for 16-color mode foreground colors,
1084 .B 38;5;0
1085 to
1086 .B 38;5;255
1087 for 88-color and 256-color modes foreground colors,
1088 .B 49
1089 for default background color,
1090 .B 40
1091 to
1092 .B 47
1093 for background colors,
1094 .B 100
1095 to
1096 .B 107
1097 for 16-color mode background colors, and
1098 .B 48;5;0
1099 to
1100 .B 48;5;255
1101 for 88-color and 256-color modes background colors.
1102 .RE
1103 .TP
1104 \fBLC_ALL\fP, \fBLC_COLLATE\fP, \fBLANG\fP
1105 These variables specify the locale for the
1106 .B LC_COLLATE
1107 category,
1108 which determines the collating sequence
1109 used to interpret range expressions like
1110 .BR [a\-z] .
1111 .TP
1112 \fBLC_ALL\fP, \fBLC_CTYPE\fP, \fBLANG\fP
1113 These variables specify the locale for the
1114 .B LC_CTYPE
1115 category,
1116 which determines the type of characters,
1117 e.g., which characters are whitespace.
1118 .TP
1119 \fBLC_ALL\fP, \fBLC_MESSAGES\fP, \fBLANG\fP
1120 These variables specify the locale for the
1121 .B LC_MESSAGES
1122 category,
1123 which determines the language that
1124 .B grep
1125 uses for messages.
1126 The default C locale uses American English messages.
1127 .TP
1128 .B POSIXLY_CORRECT
1129 If set,
1130 .B grep
1131 behaves as \s-1POSIX.2\s0 requires; otherwise,
1132 .B grep
1133 behaves more like other \s-1GNU\s0 programs.
1134 \s-1POSIX.2\s0 requires that options that follow file names must be
1135 treated as file names; by default, such options are permuted to the
1136 front of the operand list and are treated as options.
1137 Also, \s-1POSIX.2\s0 requires that unrecognized options be diagnosed as
1138 \*(lqillegal\*(rq, but since they are not really against the law the default
1139 is to diagnose them as \*(lqinvalid\*(rq.
1140 .B POSIXLY_CORRECT
1141 also disables \fB_\fP\fIN\fP\fB_GNU_nonoption_argv_flags_\fP,
1142 described below.
1143 .TP
1144 \fB_\fP\fIN\fP\fB_GNU_nonoption_argv_flags_\fP
1145 (Here
1146 .I N
1147 is
1148 .BR grep 's
1149 numeric process ID.)  If the
1150 .IR i th
1151 character of this environment variable's value is
1152 .BR 1 ,
1153 do not consider the
1154 .IR i th
1155 operand of
1156 .B grep
1157 to be an option, even if it appears to be one.
1158 A shell can put this variable in the environment for each command it runs,
1159 specifying which operands are the results of file name wildcard
1160 expansion and therefore should not be treated as options.
1161 This behavior is available only with the \s-1GNU\s0 C library, and only
1162 when
1163 .B POSIXLY_CORRECT
1164 is not set.
1165 .
1166 .SH "EXIT STATUS"
1167 Normally, the exit status is 0 if selected lines are found and 1 otherwise.
1168 But the exit status is 2 if an error occurred, unless the
1169 .B \-q
1170 or
1171 .B \-\^\-quiet
1172 or
1173 .B \-\^\-silent
1174 option is used and a selected line is found.
1175 Note, however, that \s-1POSIX\s0 only mandates, for programs such as
1176 .BR grep ,
1177 .BR cmp ,
1178 and
1179 .BR diff ,
1180 that the exit status in case of error be greater than 1;
1181 it is therefore advisable, for the sake of portability,
1182 to use logic that tests for this general condition
1183 instead of strict equality with\ 2.
1184 .
1185 .SH COPYRIGHT
1186 Copyright 1998-2000, 2002, 2005-2010 Free Software Foundation, Inc.
1187 .PP
1188 This is free software;
1189 see the source for copying conditions.
1190 There is NO warranty;
1191 not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
1192 .
1193 .SH BUGS
1194 .SS "Reporting Bugs"
1195 Email bug reports to
1196 .RB < bug\-grep@gnu.org >,
1197 a mailing list whose web page is
1198 .RB < http://lists.gnu.org/mailman/listinfo/bug\-grep >.
1199 .BR grep 's
1200 Savannah bug tracker is located at
1201 .RB < http://savannah.gnu.org/bugs/?group=grep >.
1202 .SS "Known Bugs"
1203 Large repetition counts in the
1204 .BI { n , m }
1205 construct may cause
1206 .B grep
1207 to use lots of memory.
1208 In addition,
1209 certain other obscure regular expressions require exponential time
1210 and space, and may cause
1211 .B grep
1212 to run out of memory.
1213 .PP
1214 Back-references are very slow, and may require exponential time.
1215 .
1216 .SH "SEE ALSO"
1217 .SS "Regular Manual Pages"
1218 awk(1), cmp(1), diff(1), find(1), gzip(1),
1219 perl(1), sed(1), sort(1), xargs(1), zgrep(1),
1220 mmap(2), read(2),
1221 pcre(3), pcresyntax(3), pcrepattern(3),
1222 terminfo(5),
1223 glob(7), regex(7).
1224 .SS "\s-1POSIX\s0 Programmer's Manual Page"
1225 grep(1p).
1226 .SS "\*(Txinfo Documentation"
1227 The full documentation for
1228 .B grep
1229 is maintained as a \*(Txinfo manual.
1230 If the
1231 .B info
1232 and
1233 .B grep
1234 programs are properly installed at your site, the command
1235 .IP
1236 .B info grep
1237 .PP
1238 should give you access to the complete manual.
1239 .
1240 .SH NOTES
1241 \s-1GNU\s0's not Unix, but Unix is a beast;
1242 its plural form is Unixen.
1243 .\" Work around problems with some troff -man implementations.
1244 .br