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