OSDN Git Service

Import translated manuals from JM CVS Repository.
[linuxjm/jm.git] / manual / GNU_grep / original / man1 / 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.6.3" "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 \-\^\-line\-buffered
538 Use line buffering on output.
539 This can cause a performance penalty.
540 .TP
541 .B \-\^\-mmap
542 If possible, use the
543 .BR mmap (2)
544 system call to read input, instead of
545 the default
546 .BR read (2)
547 system call.
548 In some situations,
549 .B \-\^\-mmap
550 yields better performance.
551 However,
552 .B \-\^\-mmap
553 can cause undefined behavior (including core dumps)
554 if an input file shrinks while
555 .B grep
556 is operating, or if an I/O error occurs.
557 .TP
558 .BR \-U ", " \-\^\-binary
559 Treat the file(s) as binary.
560 By default, under \s-1MS-DOS\s0 and \s-1MS\s0-Windows,
561 .BR grep
562 guesses the file type by looking at the contents of the first 32KB
563 read from the file.
564 If
565 .BR grep
566 decides the file is a text file, it strips the CR characters from the
567 original file contents (to make regular expressions with
568 .B ^
569 and
570 .B $
571 work correctly).
572 Specifying
573 .B \-U
574 overrules this guesswork, causing all files to be read and passed to the
575 matching mechanism verbatim; if the file is a text file with CR/LF
576 pairs at the end of each line, this will cause some regular
577 expressions to fail.
578 This option has no effect on platforms
579 other than \s-1MS-DOS\s0 and \s-1MS\s0-Windows.
580 .TP
581 .BR \-z ", " \-\^\-null\-data
582 Treat the input as a set of lines,
583 each terminated by a zero byte (the \s-1ASCII\s0
584 .B NUL
585 character) instead of a newline.
586 Like the
587 .B -Z
588 or
589 .B \-\^\-null
590 option, this option can be used with commands like
591 .B sort -z
592 to process arbitrary file names.
593 .
594 .SH "REGULAR EXPRESSIONS"
595 A regular expression is a pattern that describes a set of strings.
596 Regular expressions are constructed analogously to arithmetic
597 expressions, by using various operators to combine smaller expressions.
598 .PP
599 .B grep
600 understands three different versions of regular expression syntax:
601 \*(lqbasic,\*(rq \*(lqextended\*(rq and \*(lqperl.\*(rq In
602 .RB "\s-1GNU\s0\ " grep ,
603 there is no difference in available functionality between basic and
604 extended syntaxes.
605 In other implementations, basic regular expressions are less powerful.
606 The following description applies to extended regular expressions;
607 differences for basic regular expressions are summarized afterwards.
608 Perl regular expressions give additional functionality, and are
609 documented in pcresyntax(3) and pcrepattern(3), but may not be
610 available on every system.
611 .PP
612 The fundamental building blocks are the regular expressions
613 that match a single character.
614 Most characters, including all letters and digits,
615 are regular expressions that match themselves.
616 Any meta-character with special meaning
617 may be quoted by preceding it with a backslash.
618 .PP
619 The period
620 .B .\&
621 matches any single character.
622 .SS "Character Classes and Bracket Expressions"
623 A
624 .I "bracket expression"
625 is a list of characters enclosed by
626 .B [
627 and
628 .BR ] .
629 It matches any single
630 character in that list; if the first character of the list
631 is the caret
632 .B ^
633 then it matches any character
634 .I not
635 in the list.
636 For example, the regular expression
637 .B [0123456789]
638 matches any single digit.
639 .PP
640 Within a bracket expression, a
641 .I "range expression"
642 consists of two characters separated by a hyphen.
643 It matches any single character that sorts between the two characters,
644 inclusive, using the locale's collating sequence and character set.
645 For example, in the default C locale,
646 .B [a\-d]
647 is equivalent to
648 .BR [abcd] .
649 Many locales sort characters in dictionary order, and in these locales
650 .B [a\-d]
651 is typically not equivalent to
652 .BR [abcd] ;
653 it might be equivalent to
654 .BR [aBbCcDd] ,
655 for example.
656 To obtain the traditional interpretation of bracket expressions,
657 you can use the C locale by setting the
658 .B LC_ALL
659 environment variable to the value
660 .BR C .
661 .PP
662 Finally, certain named classes of characters are predefined within
663 bracket expressions, as follows.
664 Their names are self explanatory, and they are
665 .BR [:alnum:] ,
666 .BR [:alpha:] ,
667 .BR [:cntrl:] ,
668 .BR [:digit:] ,
669 .BR [:graph:] ,
670 .BR [:lower:] ,
671 .BR [:print:] ,
672 .BR [:punct:] ,
673 .BR [:space:] ,
674 .BR [:upper:] ,
675 and
676 .BR [:xdigit:].
677 For example,
678 .B [[:alnum:]]
679 means
680 .BR [0\-9A\-Za\-z] ,
681 except the latter form depends upon the C locale and the
682 \s-1ASCII\s0 character encoding, whereas the former is independent
683 of locale and character set.
684 (Note that the brackets in these class names are part of the symbolic
685 names, and must be included in addition to the brackets delimiting
686 the bracket expression.)
687 Most meta-characters lose their special meaning inside bracket expressions.
688 To include a literal
689 .B ]
690 place it first in the list.
691 Similarly, to include a literal
692 .B ^
693 place it anywhere but first.
694 Finally, to include a literal
695 .B \-
696 place it last.
697 .SS Anchoring
698 The caret
699 .B ^
700 and the dollar sign
701 .B $
702 are meta-characters that respectively match the empty string at the
703 beginning and end of a line.
704 .SS "The Backslash Character and Special Expressions"
705 The symbols
706 .B \e<
707 and
708 .B \e>
709 respectively match the empty string at the beginning and end of a word.
710 The symbol
711 .B \eb
712 matches the empty string at the edge of a word,
713 and
714 .B \eB
715 matches the empty string provided it's
716 .I not
717 at the edge of a word.
718 The symbol
719 .B \ew
720 is a synonym for
721 .B [[:alnum:]]
722 and
723 .B \eW
724 is a synonym for
725 .BR [^[:alnum:]] .
726 .SS Repetition
727 A regular expression may be followed by one of several repetition operators:
728 .PD 0
729 .TP
730 .B ?
731 The preceding item is optional and matched at most once.
732 .TP
733 .B *
734 The preceding item will be matched zero or more times.
735 .TP
736 .B +
737 The preceding item will be matched one or more times.
738 .TP
739 .BI { n }
740 The preceding item is matched exactly
741 .I n
742 times.
743 .TP
744 .BI { n ,}
745 The preceding item is matched
746 .I n
747 or more times.
748 .TP
749 .BI {, m }
750 The preceding item is matched at most
751 .I m
752 times.
753 .TP
754 .BI { n , m }
755 The preceding item is matched at least
756 .I n
757 times, but not more than
758 .I m
759 times.
760 .PD
761 .SS Concatenation
762 Two regular expressions may be concatenated; the resulting
763 regular expression matches any string formed by concatenating
764 two substrings that respectively match the concatenated
765 expressions.
766 .SS Alternation
767 Two regular expressions may be joined by the infix operator
768 .BR | ;
769 the resulting regular expression matches any string matching
770 either alternate expression.
771 .SS Precedence
772 Repetition takes precedence over concatenation, which in turn
773 takes precedence over alternation.
774 A whole expression may be enclosed in parentheses
775 to override these precedence rules and form a subexpression.
776 .SS "Back References and Subexpressions"
777 The back-reference
778 .BI \e n\c
779 \&, where
780 .I n
781 is a single digit, matches the substring
782 previously matched by the
783 .IR n th
784 parenthesized subexpression of the regular expression.
785 .SS "Basic vs Extended Regular Expressions"
786 In basic regular expressions the meta-characters
787 .BR ? ,
788 .BR + ,
789 .BR { ,
790 .BR | ,
791 .BR ( ,
792 and
793 .BR )
794 lose their special meaning; instead use the backslashed
795 versions
796 .BR \e? ,
797 .BR \e+ ,
798 .BR \e{ ,
799 .BR \e| ,
800 .BR \e( ,
801 and
802 .BR \e) .
803 .PP
804 Traditional
805 .B egrep
806 did not support the
807 .B {
808 meta-character, and some
809 .B egrep
810 implementations support
811 .B \e{
812 instead, so portable scripts should avoid
813 .B {
814 in
815 .B "grep\ \-E"
816 patterns and should use
817 .B [{]
818 to match a literal
819 .BR { .
820 .PP
821 \s-1GNU\s0
822 .B "grep\ \-E"
823 attempts to support traditional usage by assuming that
824 .B {
825 is not special if it would be the start of an invalid interval
826 specification.
827 For example, the command
828 .B "grep\ \-E\ '{1'"
829 searches for the two-character string
830 .B {1
831 instead of reporting a syntax error in the regular expression.
832 \s-1POSIX.2\s0 allows this behavior as an extension, but portable scripts
833 should avoid it.
834 .
835 .SH "ENVIRONMENT VARIABLES"
836 The behavior of
837 .B grep
838 is affected by the following environment variables.
839 .PP
840 The locale for category
841 .BI LC_ foo
842 is specified by examining the three environment variables
843 .BR LC_ALL ,
844 .BR LC_\fIfoo\fP ,
845 .BR LANG ,
846 in that order.
847 The first of these variables that is set specifies the locale.
848 For example, if
849 .B LC_ALL
850 is not set, but
851 .B LC_MESSAGES
852 is set to
853 .BR pt_BR ,
854 then the Brazilian Portuguese locale is used for the
855 .B LC_MESSAGES
856 category.
857 The C locale is used if none of these environment variables are set,
858 if the locale catalog is not installed, or if
859 .B grep
860 was not compiled with national language support (\s-1NLS\s0).
861 .TP
862 .B GREP_OPTIONS
863 This variable specifies default options
864 to be placed in front of any explicit options.
865 For example, if
866 .B GREP_OPTIONS
867 is
868 .BR "'\-\^\-binary-files=without-match \-\^\-directories=skip'" ,
869 .B grep
870 behaves as if the two options
871 .B \-\^\-binary\-files=without-match
872 and
873 .B \-\^\-directories=skip
874 had been specified before any explicit options.
875 Option specifications are separated by whitespace.
876 A backslash escapes the next character,
877 so it can be used to specify an option containing whitespace or a backslash.
878 .TP
879 .B GREP_COLOR
880 This variable specifies the color used to highlight matched (non-empty) text.
881 It is deprecated in favor of
882 .BR GREP_COLORS ,
883 but still supported.
884 The
885 .BR mt ,
886 .BR ms ,
887 and
888 .B mc
889 capabilities of
890 .B GREP_COLORS
891 have priority over it.
892 It can only specify the color used to highlight
893 the matching non-empty text in any matching line
894 (a selected line when the
895 .B -v
896 command-line option is omitted,
897 or a context line when
898 .B -v
899 is specified).
900 The default is
901 .BR 01;31 ,
902 which means a bold red foreground text on the terminal's default background.
903 .TP
904 .B GREP_COLORS
905 Specifies the colors and other attributes
906 used to highlight various parts of the output.
907 Its value is a colon-separated list of capabilities
908 that defaults to
909 .B ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36
910 with the
911 .B rv
912 and
913 .B ne
914 boolean capabilities omitted (i.e., false).
915 Supported capabilities are as follows.
916 .RS
917 .TP
918 .B sl=
919 SGR substring for whole selected lines
920 (i.e.,
921 matching lines when the
922 .B \-v
923 command-line option is omitted,
924 or non-matching lines when
925 .B \-v
926 is specified).
927 If however the boolean
928 .B rv
929 capability
930 and the
931 .B \-v
932 command-line option are both specified,
933 it applies to context matching lines instead.
934 The default is empty (i.e., the terminal's default color pair).
935 .TP
936 .B cx=
937 SGR substring for whole context lines
938 (i.e.,
939 non-matching lines when the
940 .B \-v
941 command-line option is omitted,
942 or matching lines when
943 .B \-v
944 is specified).
945 If however the boolean
946 .B rv
947 capability
948 and the
949 .B \-v
950 command-line option are both specified,
951 it applies to selected non-matching lines instead.
952 The default is empty (i.e., the terminal's default color pair).
953 .TP
954 .B rv
955 Boolean value that reverses (swaps) the meanings of
956 the
957 .B sl=
958 and
959 .B cx=
960 capabilities
961 when the
962 .B \-v
963 command-line option is specified.
964 The default is false (i.e., the capability is omitted).
965 .TP
966 .B mt=01;31
967 SGR substring for matching non-empty text in any matching line
968 (i.e.,
969 a selected line when the
970 .B \-v
971 command-line option is omitted,
972 or a context line when
973 .B \-v
974 is specified).
975 Setting this is equivalent to setting both
976 .B ms=
977 and
978 .B mc=
979 at once to the same value.
980 The default is a bold red text foreground over the current line background.
981 .TP
982 .B ms=01;31
983 SGR substring for matching non-empty text in a selected line.
984 (This is only used when the
985 .B \-v
986 command-line option is omitted.)
987 The effect of the
988 .B sl=
989 (or
990 .B cx=
991 if
992 .BR rv )
993 capability remains active when this kicks in.
994 The default is a bold red text foreground over the current line background.
995 .TP
996 .B mc=01;31
997 SGR substring for matching non-empty text in a context line.
998 (This is only used when the
999 .B \-v
1000 command-line option is specified.)
1001 The effect of the
1002 .B cx=
1003 (or
1004 .B sl=
1005 if
1006 .BR rv )
1007 capability remains active when this kicks in.
1008 The default is a bold red text foreground over the current line background.
1009 .TP
1010 .B fn=35
1011 SGR substring for file names prefixing any content line.
1012 The default is a magenta text foreground over the terminal's default background.
1013 .TP
1014 .B ln=32
1015 SGR substring for line numbers prefixing any content line.
1016 The default is a green text foreground over the terminal's default background.
1017 .TP
1018 .B bn=32
1019 SGR substring for byte offsets prefixing any content line.
1020 The default is a green text foreground over the terminal's default background.
1021 .TP
1022 .B se=36
1023 SGR substring for separators that are inserted
1024 between selected line fields
1025 .RB ( : ),
1026 between context line fields,
1027 .RB ( \- ),
1028 and between groups of adjacent lines when nonzero context is specified
1029 .RB ( \-\^\- ).
1030 The default is a cyan text foreground over the terminal's default background.
1031 .TP
1032 .B ne
1033 Boolean value that prevents clearing to the end of line
1034 using Erase in Line (EL) to Right
1035 .RB ( \\\\\\33[K )
1036 each time a colorized item ends.
1037 This is needed on terminals on which EL is not supported.
1038 It is otherwise useful on terminals
1039 for which the
1040 .B back_color_erase
1041 .RB ( bce )
1042 boolean terminfo capability does not apply,
1043 when the chosen highlight colors do not affect the background,
1044 or when EL is too slow or causes too much flicker.
1045 The default is false (i.e., the capability is omitted).
1046 .PP
1047 Note that boolean capabilities have no
1048 .BR = ...
1049 part.
1050 They are omitted (i.e., false) by default and become true when specified.
1051 .PP
1052 See the Select Graphic Rendition (SGR) section
1053 in the documentation of the text terminal that is used
1054 for permitted values and their meaning as character attributes.
1055 These substring values are integers in decimal representation
1056 and can be concatenated with semicolons.
1057 .B grep
1058 takes care of assembling the result
1059 into a complete SGR sequence
1060 .RB ( \\\\\\33[ ... m ).
1061 Common values to concatenate include
1062 .B 1
1063 for bold,
1064 .B 4
1065 for underline,
1066 .B 5
1067 for blink,
1068 .B 7
1069 for inverse,
1070 .B 39
1071 for default foreground color,
1072 .B 30
1073 to
1074 .B 37
1075 for foreground colors,
1076 .B 90
1077 to
1078 .B 97
1079 for 16-color mode foreground colors,
1080 .B 38;5;0
1081 to
1082 .B 38;5;255
1083 for 88-color and 256-color modes foreground colors,
1084 .B 49
1085 for default background color,
1086 .B 40
1087 to
1088 .B 47
1089 for background colors,
1090 .B 100
1091 to
1092 .B 107
1093 for 16-color mode background colors, and
1094 .B 48;5;0
1095 to
1096 .B 48;5;255
1097 for 88-color and 256-color modes background colors.
1098 .RE
1099 .TP
1100 \fBLC_ALL\fP, \fBLC_COLLATE\fP, \fBLANG\fP
1101 These variables specify the locale for the
1102 .B LC_COLLATE
1103 category,
1104 which determines the collating sequence
1105 used to interpret range expressions like
1106 .BR [a\-z] .
1107 .TP
1108 \fBLC_ALL\fP, \fBLC_CTYPE\fP, \fBLANG\fP
1109 These variables specify the locale for the
1110 .B LC_CTYPE
1111 category,
1112 which determines the type of characters,
1113 e.g., which characters are whitespace.
1114 .TP
1115 \fBLC_ALL\fP, \fBLC_MESSAGES\fP, \fBLANG\fP
1116 These variables specify the locale for the
1117 .B LC_MESSAGES
1118 category,
1119 which determines the language that
1120 .B grep
1121 uses for messages.
1122 The default C locale uses American English messages.
1123 .TP
1124 .B POSIXLY_CORRECT
1125 If set,
1126 .B grep
1127 behaves as \s-1POSIX.2\s0 requires; otherwise,
1128 .B grep
1129 behaves more like other \s-1GNU\s0 programs.
1130 \s-1POSIX.2\s0 requires that options that follow file names must be
1131 treated as file names; by default, such options are permuted to the
1132 front of the operand list and are treated as options.
1133 Also, \s-1POSIX.2\s0 requires that unrecognized options be diagnosed as
1134 \*(lqillegal\*(rq, but since they are not really against the law the default
1135 is to diagnose them as \*(lqinvalid\*(rq.
1136 .B POSIXLY_CORRECT
1137 also disables \fB_\fP\fIN\fP\fB_GNU_nonoption_argv_flags_\fP,
1138 described below.
1139 .TP
1140 \fB_\fP\fIN\fP\fB_GNU_nonoption_argv_flags_\fP
1141 (Here
1142 .I N
1143 is
1144 .BR grep 's
1145 numeric process ID.)  If the
1146 .IR i th
1147 character of this environment variable's value is
1148 .BR 1 ,
1149 do not consider the
1150 .IR i th
1151 operand of
1152 .B grep
1153 to be an option, even if it appears to be one.
1154 A shell can put this variable in the environment for each command it runs,
1155 specifying which operands are the results of file name wildcard
1156 expansion and therefore should not be treated as options.
1157 This behavior is available only with the \s-1GNU\s0 C library, and only
1158 when
1159 .B POSIXLY_CORRECT
1160 is not set.
1161 .
1162 .SH "EXIT STATUS"
1163 Normally, the exit status is 0 if selected lines are found and 1 otherwise.
1164 But the exit status is 2 if an error occurred, unless the
1165 .B \-q
1166 or
1167 .B \-\^\-quiet
1168 or
1169 .B \-\^\-silent
1170 option is used and a selected line is found.
1171 Note, however, that \s-1POSIX\s0 only mandates, for programs such as
1172 .BR grep ,
1173 .BR cmp ,
1174 and
1175 .BR diff ,
1176 that the exit status in case of error be greater than 1;
1177 it is therefore advisable, for the sake of portability,
1178 to use logic that tests for this general condition
1179 instead of strict equality with\ 2.
1180 .
1181 .SH COPYRIGHT
1182 Copyright 1998-2000, 2002, 2005-2010 Free Software Foundation, Inc.
1183 .PP
1184 This is free software;
1185 see the source for copying conditions.
1186 There is NO warranty;
1187 not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
1188 .
1189 .SH BUGS
1190 .SS "Reporting Bugs"
1191 Email bug reports to
1192 .RB < bug\-grep@gnu.org >,
1193 a mailing list whose web page is
1194 .RB < http://lists.gnu.org/mailman/listinfo/bug\-grep >.
1195 .BR grep 's
1196 Savannah bug tracker is located at
1197 .RB < http://savannah.gnu.org/bugs/?group=grep >.
1198 .SS "Known Bugs"
1199 Large repetition counts in the
1200 .BI { n , m }
1201 construct may cause
1202 .B grep
1203 to use lots of memory.
1204 In addition,
1205 certain other obscure regular expressions require exponential time
1206 and space, and may cause
1207 .B grep
1208 to run out of memory.
1209 .PP
1210 Back-references are very slow, and may require exponential time.
1211 .
1212 .SH "SEE ALSO"
1213 .SS "Regular Manual Pages"
1214 awk(1), cmp(1), diff(1), find(1), gzip(1),
1215 perl(1), sed(1), sort(1), xargs(1), zgrep(1),
1216 mmap(2), read(2),
1217 pcre(3), pcresyntax(3), pcrepattern(3),
1218 terminfo(5),
1219 glob(7), regex(7).
1220 .SS "\s-1POSIX\s0 Programmer's Manual Page"
1221 grep(1p).
1222 .SS "\*(Txinfo Documentation"
1223 The full documentation for
1224 .B grep
1225 is maintained as a \*(Txinfo manual.
1226 If the
1227 .B info
1228 and
1229 .B grep
1230 programs are properly installed at your site, the command
1231 .IP
1232 .B info grep
1233 .PP
1234 should give you access to the complete manual.
1235 .
1236 .SH NOTES
1237 \s-1GNU\s0's not Unix, but Unix is a beast;
1238 its plural form is Unixen.
1239 .\" Work around problems with some troff -man implementations.
1240 .br