389 lines
		
	
	
		
			9.1 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			389 lines
		
	
	
		
			9.1 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
.\"	$OpenBSD: grep.1,v 1.35 2007/05/31 19:20:10 jmc Exp $
 | 
						|
.\" Copyright (c) 1980, 1990, 1993
 | 
						|
.\"	The Regents of the University of California.  All rights reserved.
 | 
						|
.\"
 | 
						|
.\" Redistribution and use in source and binary forms, with or without
 | 
						|
.\" modification, are permitted provided that the following conditions
 | 
						|
.\" are met:
 | 
						|
.\" 1. Redistributions of source code must retain the above copyright
 | 
						|
.\"    notice, this list of conditions and the following disclaimer.
 | 
						|
.\" 2. Redistributions in binary form must reproduce the above copyright
 | 
						|
.\"    notice, this list of conditions and the following disclaimer in the
 | 
						|
.\"    documentation and/or other materials provided with the distribution.
 | 
						|
.\" 3. Neither the name of the University nor the names of its contributors
 | 
						|
.\"    may be used to endorse or promote products derived from this software
 | 
						|
.\"    without specific prior written permission.
 | 
						|
.\"
 | 
						|
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 | 
						|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
						|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
						|
.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 | 
						|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
						|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
						|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
						|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
						|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
						|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
						|
.\" SUCH DAMAGE.
 | 
						|
.\"
 | 
						|
.\"	@(#)grep.1	8.3 (Berkeley) 4/18/94
 | 
						|
.\"
 | 
						|
.Dd $Mdocdate: May 31 2007 $
 | 
						|
.Dt GREP 1
 | 
						|
.Os
 | 
						|
.Sh NAME
 | 
						|
.Nm grep , egrep , fgrep ,
 | 
						|
.Nm zgrep , zegrep , zfgrep
 | 
						|
.Nd file pattern searcher
 | 
						|
.Sh SYNOPSIS
 | 
						|
.Nm grep
 | 
						|
.Bk -words
 | 
						|
.Op Fl abcEFGHhIiLlnoPqRSsUVvwxZ
 | 
						|
.Op Fl A Ar num
 | 
						|
.Op Fl B Ar num
 | 
						|
.Op Fl C Ns Op Ar num
 | 
						|
.Op Fl e Ar pattern
 | 
						|
.Op Fl f Ar file
 | 
						|
.Op Fl -binary-files Ns = Ns Ar value
 | 
						|
.Op Fl -context Ns Op = Ns Ar num
 | 
						|
.Op Fl -line-buffered
 | 
						|
.Op Ar pattern
 | 
						|
.Op Ar
 | 
						|
.Ek
 | 
						|
.Sh DESCRIPTION
 | 
						|
The
 | 
						|
.Nm grep
 | 
						|
utility searches any given input files,
 | 
						|
selecting lines that match one or more patterns.
 | 
						|
By default, a pattern matches an input line if the regular expression
 | 
						|
(RE) in the pattern matches the input line
 | 
						|
without its trailing newline.
 | 
						|
An empty expression matches every line.
 | 
						|
Each input line that matches at least one of the patterns is written
 | 
						|
to the standard output.
 | 
						|
.Pp
 | 
						|
.Nm grep
 | 
						|
is used for simple patterns and
 | 
						|
basic regular expressions
 | 
						|
.Pq BREs ;
 | 
						|
.Nm egrep
 | 
						|
can handle extended regular expressions
 | 
						|
.Pq EREs .
 | 
						|
See
 | 
						|
.Xr re_format 7
 | 
						|
for more information on regular expressions.
 | 
						|
.Nm fgrep
 | 
						|
is quicker than both
 | 
						|
.Nm grep
 | 
						|
and
 | 
						|
.Nm egrep ,
 | 
						|
but can only handle fixed patterns
 | 
						|
(i.e. it does not interpret regular expressions).
 | 
						|
Patterns may consist of one or more lines,
 | 
						|
allowing any of the pattern lines to match a portion of the input.
 | 
						|
.Pp
 | 
						|
.Nm zgrep ,
 | 
						|
.Nm zegrep ,
 | 
						|
and
 | 
						|
.Nm zfgrep
 | 
						|
act like
 | 
						|
.Nm grep ,
 | 
						|
.Nm egrep ,
 | 
						|
and
 | 
						|
.Nm fgrep ,
 | 
						|
respectively, but accept input files compressed with the
 | 
						|
.Xr compress 1
 | 
						|
or
 | 
						|
.Xr gzip 1
 | 
						|
compression utilities.
 | 
						|
.Pp
 | 
						|
The following options are available:
 | 
						|
.Bl -tag -width indent
 | 
						|
.It Fl A Ar num
 | 
						|
Print
 | 
						|
.Ar num
 | 
						|
lines of trailing context after each match.
 | 
						|
See also the
 | 
						|
.Fl B
 | 
						|
and
 | 
						|
.Fl C
 | 
						|
options.
 | 
						|
.It Fl a
 | 
						|
Treat all files as ASCII text.
 | 
						|
Normally
 | 
						|
.Nm
 | 
						|
will simply print
 | 
						|
.Dq Binary file ... matches
 | 
						|
if files contain binary characters.
 | 
						|
Use of this option forces
 | 
						|
.Nm
 | 
						|
to output lines matching the specified pattern.
 | 
						|
.It Fl B Ar num
 | 
						|
Print
 | 
						|
.Ar num
 | 
						|
lines of leading context before each match.
 | 
						|
See also the
 | 
						|
.Fl A
 | 
						|
and
 | 
						|
.Fl C
 | 
						|
options.
 | 
						|
.It Fl b
 | 
						|
The offset in bytes of a matched pattern is
 | 
						|
displayed in front of the respective matched line.
 | 
						|
.It Fl C Ns Op Ar num
 | 
						|
Print
 | 
						|
.Ar num
 | 
						|
lines of leading and trailing context surrounding each match.
 | 
						|
The default is 2 and is equivalent to
 | 
						|
.Fl A
 | 
						|
.Ar 2
 | 
						|
.Fl B
 | 
						|
.Ar 2 .
 | 
						|
Note:
 | 
						|
no whitespace may be given between the option and its argument.
 | 
						|
.It Fl c
 | 
						|
Only a count of selected lines is written to standard output.
 | 
						|
.It Fl E
 | 
						|
Interpret
 | 
						|
.Ar pattern
 | 
						|
as an extended regular expression
 | 
						|
(i.e. force
 | 
						|
.Nm grep
 | 
						|
to behave as
 | 
						|
.Nm egrep ) .
 | 
						|
.It Fl e Ar pattern
 | 
						|
Specify a pattern used during the search of the input:
 | 
						|
an input line is selected if it matches any of the specified patterns.
 | 
						|
This option is most useful when multiple
 | 
						|
.Fl e
 | 
						|
options are used to specify multiple patterns,
 | 
						|
or when a pattern begins with a dash
 | 
						|
.Pq Sq - .
 | 
						|
.It Fl F
 | 
						|
Interpret
 | 
						|
.Ar pattern
 | 
						|
as a set of fixed strings
 | 
						|
(i.e. force
 | 
						|
.Nm grep
 | 
						|
to behave as
 | 
						|
.Nm fgrep ) .
 | 
						|
.It Fl f Ar file
 | 
						|
Read one or more newline separated patterns from
 | 
						|
.Ar file .
 | 
						|
Empty pattern lines match every input line.
 | 
						|
Newlines are not considered part of a pattern.
 | 
						|
If
 | 
						|
.Ar file
 | 
						|
is empty, nothing is matched.
 | 
						|
.It Fl G
 | 
						|
Interpret
 | 
						|
.Ar pattern
 | 
						|
as a basic regular expression
 | 
						|
(i.e. force
 | 
						|
.Nm grep
 | 
						|
to behave as traditional
 | 
						|
.Nm grep ) .
 | 
						|
.It Fl H
 | 
						|
If
 | 
						|
.Fl R
 | 
						|
is specified, follow symbolic links only if they were explicitly listed
 | 
						|
on the command line.
 | 
						|
The default is not to follow symbolic links.
 | 
						|
.It Fl h
 | 
						|
Never print filename headers
 | 
						|
.Pq i.e. filenames
 | 
						|
with output lines.
 | 
						|
.It Fl I
 | 
						|
Ignore binary files.
 | 
						|
.It Fl i
 | 
						|
Perform case insensitive matching.
 | 
						|
By default,
 | 
						|
.Nm grep
 | 
						|
is case sensitive.
 | 
						|
.It Fl L
 | 
						|
Only the names of files not containing selected lines are written to
 | 
						|
standard output.
 | 
						|
Pathnames are listed once per file searched.
 | 
						|
If the standard input is searched, the string
 | 
						|
.Dq (standard input)
 | 
						|
is written.
 | 
						|
.It Fl l
 | 
						|
Only the names of files containing selected lines are written to
 | 
						|
standard output.
 | 
						|
.Nm grep
 | 
						|
will only search a file until a match has been found,
 | 
						|
making searches potentially less expensive.
 | 
						|
Pathnames are listed once per file searched.
 | 
						|
If the standard input is searched, the string
 | 
						|
.Dq (standard input)
 | 
						|
is written.
 | 
						|
.It Fl n
 | 
						|
Each output line is preceded by its relative line number in the file,
 | 
						|
starting at line 1.
 | 
						|
The line number counter is reset for each file processed.
 | 
						|
This option is ignored if
 | 
						|
.Fl c ,
 | 
						|
.Fl L ,
 | 
						|
.Fl l ,
 | 
						|
or
 | 
						|
.Fl q
 | 
						|
is
 | 
						|
specified.
 | 
						|
.It Fl o
 | 
						|
Always print filename headers with output lines.
 | 
						|
.It Fl P
 | 
						|
If
 | 
						|
.Fl R
 | 
						|
is specified, no symbolic links are followed.
 | 
						|
This is the default.
 | 
						|
.It Fl q
 | 
						|
Quiet mode:
 | 
						|
suppress normal output.
 | 
						|
.Nm grep
 | 
						|
will only search a file until a match has been found,
 | 
						|
making searches potentially less expensive.
 | 
						|
.It Fl R
 | 
						|
Recursively search subdirectories listed.
 | 
						|
.It Fl S
 | 
						|
If
 | 
						|
.Fl R
 | 
						|
is specified, all symbolic links are followed.
 | 
						|
The default is not to follow symbolic links.
 | 
						|
.It Fl s
 | 
						|
Silent mode.
 | 
						|
Nonexistent and unreadable files are ignored
 | 
						|
(i.e. their error messages are suppressed).
 | 
						|
.It Fl U
 | 
						|
Search binary files, but do not attempt to print them.
 | 
						|
.It Fl V
 | 
						|
Display version information.
 | 
						|
All other options are ignored.
 | 
						|
.It Fl v
 | 
						|
Selected lines are those
 | 
						|
.Em not
 | 
						|
matching any of the specified patterns.
 | 
						|
.It Fl w
 | 
						|
The expression is searched for as a word (as if surrounded by
 | 
						|
.Sq [[:<:]]
 | 
						|
and
 | 
						|
.Sq [[:>:]] ;
 | 
						|
see
 | 
						|
.Xr re_format 7 ) .
 | 
						|
.It Fl x
 | 
						|
Only input lines selected against an entire fixed string or regular
 | 
						|
expression are considered to be matching lines.
 | 
						|
.It Fl Z
 | 
						|
Force
 | 
						|
.Nm grep
 | 
						|
to behave as
 | 
						|
.Nm zgrep .
 | 
						|
.It Fl Fl binary-files Ns = Ns Ar value
 | 
						|
Controls searching and printing of binary files.
 | 
						|
Options are
 | 
						|
.Ar binary ,
 | 
						|
the default: search binary files but do not print them;
 | 
						|
.Ar without-match :
 | 
						|
do not search binary files;
 | 
						|
and
 | 
						|
.Ar text :
 | 
						|
treat all files as text.
 | 
						|
.Sm off
 | 
						|
.It Fl Fl context Op = Ar num
 | 
						|
.Sm on
 | 
						|
Print
 | 
						|
.Ar num
 | 
						|
lines of leading and trailing context.
 | 
						|
The default is 2.
 | 
						|
.It Fl Fl line-buffered
 | 
						|
Force output to be line buffered.
 | 
						|
By default, output is line buffered when standard output is a terminal
 | 
						|
and block buffered otherwise.
 | 
						|
.Pp
 | 
						|
.El
 | 
						|
If no file arguments are specified, the standard input is used.
 | 
						|
.Sh RETURN VALUES
 | 
						|
The
 | 
						|
.Nm grep
 | 
						|
utility exits with one of the following values:
 | 
						|
.Pp
 | 
						|
.Bl -tag -width flag -compact
 | 
						|
.It Li 0
 | 
						|
One or more lines were selected.
 | 
						|
.It Li 1
 | 
						|
No lines were selected.
 | 
						|
.It Li \*(Gt1
 | 
						|
An error occurred.
 | 
						|
.El
 | 
						|
.Sh EXAMPLES
 | 
						|
To find all occurrences of the word
 | 
						|
.Sq patricia
 | 
						|
in a file:
 | 
						|
.Pp
 | 
						|
.Dl $ grep 'patricia' myfile
 | 
						|
.Pp
 | 
						|
To find all occurrences of the pattern
 | 
						|
.Ql .Pp
 | 
						|
at the beginning of a line:
 | 
						|
.Pp
 | 
						|
.Dl $ grep '^\e.Pp' myfile
 | 
						|
.Pp
 | 
						|
The apostrophes ensure the entire expression is evaluated by
 | 
						|
.Nm grep
 | 
						|
instead of by the user's shell.
 | 
						|
The caret
 | 
						|
.Ql ^
 | 
						|
matches the null string at the beginning of a line,
 | 
						|
and the
 | 
						|
.Ql \e
 | 
						|
escapes the
 | 
						|
.Ql \&. ,
 | 
						|
which would otherwise match any character.
 | 
						|
.Pp
 | 
						|
To find all lines in a file which do not contain the words
 | 
						|
.Sq foo
 | 
						|
or
 | 
						|
.Sq bar :
 | 
						|
.Pp
 | 
						|
.Dl $ grep -v -e 'foo' -e 'bar' myfile
 | 
						|
.Pp
 | 
						|
A simple example of an extended regular expression:
 | 
						|
.Pp
 | 
						|
.Dl $ egrep '19|20|25' calendar
 | 
						|
.Pp
 | 
						|
Peruses the file
 | 
						|
.Sq calendar
 | 
						|
looking for either 19, 20, or 25.
 | 
						|
.Sh SEE ALSO
 | 
						|
.Xr ed 1 ,
 | 
						|
.Xr ex 1 ,
 | 
						|
.Xr gzip 1 ,
 | 
						|
.Xr sed 1 ,
 | 
						|
.Xr re_format 7
 | 
						|
.Sh STANDARDS
 | 
						|
The
 | 
						|
.Nm
 | 
						|
utility is compliant with the
 | 
						|
.St -p1003.1-2008
 | 
						|
specification.
 | 
						|
.Pp
 | 
						|
The flags
 | 
						|
.Op Fl AaBbCGHhILoPRSUVwZ
 | 
						|
are extensions to that specification, and the behaviour of the
 | 
						|
.Fl f
 | 
						|
flag when used with an empty pattern file is left undefined.
 | 
						|
.Pp
 | 
						|
All long options are provided for compatibility with
 | 
						|
GNU versions of this utility.
 | 
						|
.Pp
 | 
						|
Historic versions of the
 | 
						|
.Nm grep
 | 
						|
utility also supported the flags
 | 
						|
.Op Fl ruy .
 | 
						|
This implementation supports those options;
 | 
						|
however, their use is strongly discouraged.
 | 
						|
.Sh HISTORY
 | 
						|
The
 | 
						|
.Nm grep
 | 
						|
command first appeared in
 | 
						|
.At v6 .
 |