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