xref: /freebsd/usr.bin/grep/grep.1 (revision bc6940585f5f394c8c3fcff58c764a40f7294d4b)
1.\"	$FreeBSD$
2.\"	$OpenBSD: grep.1,v 1.38 2010/04/05 06:30:59 jmc Exp $
3.\" Copyright (c) 1980, 1990, 1993
4.\"	The Regents of the University of California.  All rights reserved.
5.\"
6.\" Redistribution and use in source and binary forms, with or without
7.\" modification, are permitted provided that the following conditions
8.\" are met:
9.\" 1. Redistributions of source code must retain the above copyright
10.\"    notice, this list of conditions and the following disclaimer.
11.\" 2. Redistributions in binary form must reproduce the above copyright
12.\"    notice, this list of conditions and the following disclaimer in the
13.\"    documentation and/or other materials provided with the distribution.
14.\" 3. Neither the name of the University nor the names of its contributors
15.\"    may be used to endorse or promote products derived from this software
16.\"    without specific prior written permission.
17.\"
18.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
19.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
22.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28.\" SUCH DAMAGE.
29.\"
30.\"	@(#)grep.1	8.3 (Berkeley) 4/18/94
31.\"
32.Dd September 19, 2009
33.Dt GREP 1
34.Os
35.Sh NAME
36.Nm grep , egrep , fgrep ,
37.Nm zgrep , zegrep , zfgrep
38.Nd file pattern searcher
39.Sh SYNOPSIS
40.Nm grep
41.Bk -words
42.Op Fl abcdDEFGHhIiJLlmnOopqRSsUVvwxZ
43.Op Fl A Ar num
44.Op Fl B Ar num
45.Op Fl C Ns Op Ar num
46.Op Fl e Ar pattern
47.Op Fl f Ar file
48.Op Fl Fl binary-files Ns = Ns Ar value
49.Op Fl Fl color Ns Op = Ns Ar when
50.Op Fl Fl colour Ns Op = Ns Ar when
51.Op Fl Fl context Ns Op = Ns Ar num
52.Op Fl Fl label
53.Op Fl Fl line-buffered
54.Op Fl Fl null
55.Op Ar pattern
56.Op Ar
57.Ek
58.Sh DESCRIPTION
59The
60.Nm grep
61utility searches any given input files,
62selecting lines that match one or more patterns.
63By default, a pattern matches an input line if the regular expression
64(RE) in the pattern matches the input line
65without its trailing newline.
66An empty expression matches every line.
67Each input line that matches at least one of the patterns is written
68to the standard output.
69.Pp
70.Nm grep
71is used for simple patterns and
72basic regular expressions
73.Pq BREs ;
74.Nm egrep
75can handle extended regular expressions
76.Pq EREs .
77See
78.Xr re_format 7
79for more information on regular expressions.
80.Nm fgrep
81is quicker than both
82.Nm grep
83and
84.Nm egrep ,
85but can only handle fixed patterns
86(i.e. it does not interpret regular expressions).
87Patterns may consist of one or more lines,
88allowing any of the pattern lines to match a portion of the input.
89.Pp
90.Nm zgrep ,
91.Nm zegrep ,
92and
93.Nm zfgrep
94act like
95.Nm grep ,
96.Nm egrep ,
97and
98.Nm fgrep ,
99respectively, but accept input files compressed with the
100.Xr compress 1
101or
102.Xr gzip 1
103compression utilities.
104.Pp
105The following options are available:
106.Bl -tag -width indent
107.It Fl A Ar num , Fl Fl after-context Ns = Ns Ar num
108Print
109.Ar num
110lines of trailing context after each match.
111See also the
112.Fl B
113and
114.Fl C
115options.
116.It Fl a , Fl Fl text
117Treat all files as ASCII text.
118Normally
119.Nm
120will simply print
121.Dq Binary file ... matches
122if files contain binary characters.
123Use of this option forces
124.Nm
125to output lines matching the specified pattern.
126.It Fl B Ar num , Fl Fl before-context Ns = Ns Ar num
127Print
128.Ar num
129lines of leading context before each match.
130See also the
131.Fl A
132and
133.Fl C
134options.
135.It Fl b , Fl Fl byte-offset
136The offset in bytes of a matched pattern is
137displayed in front of the respective matched line.
138.It Fl C Ns Op Ar num , Fl Fl context Ns = Ns Ar num
139Print
140.Ar num
141lines of leading and trailing context surrounding each match.
142The default is 2 and is equivalent to
143.Fl A
144.Ar 2
145.Fl B
146.Ar 2 .
147Note:
148no whitespace may be given between the option and its argument.
149.It Fl c , Fl Fl count
150Only a count of selected lines is written to standard output.
151.It Fl Fl colour Ns = Ns Op Ar when , Fl Fl color Ns = Ns Op Ar when
152Mark up the matching text with the expression stored in
153.Ev GREP_COLOR
154environment variable.
155The possible values of when can be `never', `always' or `auto'.
156.It Fl D Ar action , Fl Fl devices Ns = Ns Ar action
157Specify the demanded action for devices, FIFOs and sockets.
158The default action is `read', which means, that they are read
159as if they were normal files.
160If the action is set to `skip', devices will be silently skipped.
161.It Fl d Ar action , Fl Fl directories Ns = Ns Ar action
162Specify the demanded action for directories.
163It is `read' by default, which means that the directories
164are read in the same manner as normal files.
165Other possible values are `skip' to silently ignore the
166directories, and `recurse' to read them recursively, which
167has the same effect as the
168.Fl R
169and
170.Fl r
171option.
172.It Fl E , Fl Fl extended-regexp
173Interpret
174.Ar pattern
175as an extended regular expression
176(i.e. force
177.Nm grep
178to behave as
179.Nm egrep ) .
180.It Fl e Ar pattern , Fl Fl regexp Ns = Ns Ar pattern
181Specify a pattern used during the search of the input:
182an input line is selected if it matches any of the specified patterns.
183This option is most useful when multiple
184.Fl e
185options are used to specify multiple patterns,
186or when a pattern begins with a dash
187.Pq Sq - .
188.It Fl Fl exclude
189If
190.Fl R
191is specified, it excludes files matching the given
192filename pattern.
193.It Fl Fl exclude-dir
194If
195.Fl R
196is specified, it excludes directories matching the
197given filename pattern.
198.It Fl F , Fl Fl fixed-strings
199Interpret
200.Ar pattern
201as a set of fixed strings
202(i.e. force
203.Nm grep
204to behave as
205.Nm fgrep ) .
206.It Fl f Ar file , Fl Fl file Ns = Ns Ar file
207Read one or more newline separated patterns from
208.Ar file .
209Empty pattern lines match every input line.
210Newlines are not considered part of a pattern.
211If
212.Ar file
213is empty, nothing is matched.
214.It Fl G , Fl Fl basic-regexp
215Interpret
216.Ar pattern
217as a basic regular expression
218(i.e. force
219.Nm grep
220to behave as traditional
221.Nm grep ) .
222.It Fl H
223Always print filename headers with output lines.
224.It Fl h , Fl Fl no-filename
225Never print filename headers
226.Pq i.e. filenames
227with output lines.
228.It Fl Fl help
229Print a brief help message.
230.It Fl I
231Ignore binary files.
232This option is equivalent to
233.Fl Fl binary-file Ns = Ns Ar without-match
234option.
235.It Fl i , Fl Fl ignore-case
236Perform case insensitive matching.
237By default,
238.Nm grep
239is case sensitive.
240.It Fl Fl include
241If
242.Fl R
243is specified, it includes the files matching the
244given filename pattern.
245.It Fl Fl include-dir
246If
247.Fl R
248is specified, it includes the directories matching the
249given filename pattern.
250.It Fl J, Fl Fl bz2decompress
251Decompress the
252.Xr bzip2 1
253compressed file before looking for the text.
254.It Fl L , Fl Fl files-without-match
255Only the names of files not containing selected lines are written to
256standard output.
257Pathnames are listed once per file searched.
258If the standard input is searched, the string
259.Dq (standard input)
260is written.
261.It Fl l , Fl Fl files-with-matches
262Only the names of files containing selected lines are written to
263standard output.
264.Nm grep
265will only search a file until a match has been found,
266making searches potentially less expensive.
267Pathnames are listed once per file searched.
268If the standard input is searched, the string
269.Dq (standard input)
270is written.
271.It Fl Fl mmap
272Use
273.Xr mmap 2
274instead of
275.Xr read 2
276to read input, which can result in better performance under some
277circumstances but can cause undefined behaiour.
278.It Fl m Ar num, Fl Fl max-count Ns = Ns Ar num
279Stop reading the file after
280.Ar num
281matches.
282.It Fl n , Fl Fl line-number
283Each output line is preceded by its relative line number in the file,
284starting at line 1.
285The line number counter is reset for each file processed.
286This option is ignored if
287.Fl c ,
288.Fl L ,
289.Fl l ,
290or
291.Fl q
292is
293specified.
294.It Fl Fl null
295Prints a zero-byte after the file name.
296.It Fl O
297If
298.Fl R
299is specified, follow symbolic links only if they were explicitly listed
300on the command line.
301The default is not to follow symbolic links.
302.It Fl o, Fl Fl only-matching
303Prints only the matching part of the lines.
304.It Fl p
305If
306.Fl R
307is specified, no symbolic links are followed.
308This is the default.
309.It Fl q , Fl Fl quiet , Fl Fl silent
310Quiet mode:
311suppress normal output.
312.Nm grep
313will only search a file until a match has been found,
314making searches potentially less expensive.
315.It Fl R , Fl r , Fl Fl recursive
316Recursively search subdirectories listed.
317.It Fl S
318If
319.Fl R
320is specified, all symbolic links are followed.
321The default is not to follow symbolic links.
322.It Fl s , Fl Fl no-messages
323Silent mode.
324Nonexistent and unreadable files are ignored
325(i.e. their error messages are suppressed).
326.It Fl U , Fl Fl binary
327Search binary files, but do not attempt to print them.
328.It Fl V , Fl Fl version
329Display version information and exit.
330.It Fl v , Fl Fl invert-match
331Selected lines are those
332.Em not
333matching any of the specified patterns.
334.It Fl w , Fl Fl word-regexp
335The expression is searched for as a word (as if surrounded by
336.Sq [[:<:]]
337and
338.Sq [[:>:]] ;
339see
340.Xr re_format 7 ) .
341.It Fl x , Fl Fl line-regexp
342Only input lines selected against an entire fixed string or regular
343expression are considered to be matching lines.
344.It Fl y
345Equivalent to
346.Fl i .
347Obsoleted.
348.It Fl Z , Fl z , Fl Fl decompress
349Force
350.Nm grep
351to behave as
352.Nm zgrep .
353.It Fl Fl binary-files Ns = Ns Ar value
354Controls searching and printing of binary files.
355Options are
356.Ar binary ,
357the default: search binary files but do not print them;
358.Ar without-match :
359do not search binary files;
360and
361.Ar text :
362treat all files as text.
363.Sm off
364.It Fl Fl context Op = Ar num
365.Sm on
366Print
367.Ar num
368lines of leading and trailing context.
369The default is 2.
370.It Fl Fl line-buffered
371Force output to be line buffered.
372By default, output is line buffered when standard output is a terminal
373and block buffered otherwise.
374.Pp
375.El
376If no file arguments are specified, the standard input is used.
377.Sh EXIT STATUS
378The
379.Nm grep
380utility exits with one of the following values:
381.Pp
382.Bl -tag -width flag -compact
383.It Li 0
384One or more lines were selected.
385.It Li 1
386No lines were selected.
387.It Li \*(Gt1
388An error occurred.
389.El
390.Sh EXAMPLES
391To find all occurrences of the word
392.Sq patricia
393in a file:
394.Pp
395.Dl $ grep 'patricia' myfile
396.Pp
397To find all occurrences of the pattern
398.Ql .Pp
399at the beginning of a line:
400.Pp
401.Dl $ grep '^\e.Pp' myfile
402.Pp
403The apostrophes ensure the entire expression is evaluated by
404.Nm grep
405instead of by the user's shell.
406The caret
407.Ql ^
408matches the null string at the beginning of a line,
409and the
410.Ql \e
411escapes the
412.Ql \&. ,
413which would otherwise match any character.
414.Pp
415To find all lines in a file which do not contain the words
416.Sq foo
417or
418.Sq bar :
419.Pp
420.Dl $ grep -v -e 'foo' -e 'bar' myfile
421.Pp
422A simple example of an extended regular expression:
423.Pp
424.Dl $ egrep '19|20|25' calendar
425.Pp
426Peruses the file
427.Sq calendar
428looking for either 19, 20, or 25.
429.Sh SEE ALSO
430.Xr ed 1 ,
431.Xr ex 1 ,
432.Xr gzip 1 ,
433.Xr sed 1 ,
434.Xr re_format 7
435.Sh STANDARDS
436The
437.Nm
438utility is compliant with the
439.St -p1003.1-2008
440specification.
441.Pp
442The flags
443.Op Fl AaBbCDdGHhIJLmoPRSUVwZ
444are extensions to that specification, and the behaviour of the
445.Fl f
446flag when used with an empty pattern file is left undefined.
447.Pp
448All long options are provided for compatibility with
449GNU versions of this utility.
450.Pp
451Historic versions of the
452.Nm grep
453utility also supported the flags
454.Op Fl ruy .
455This implementation supports those options;
456however, their use is strongly discouraged.
457.Sh HISTORY
458The
459.Nm grep
460command first appeared in
461.At v6 .
462