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