141 lines
2.7 KiB
Plaintext
141 lines
2.7 KiB
Plaintext
.TH GREP 1
|
|
.SH NAME
|
|
grep, g \- search a file for a pattern
|
|
.SH SYNOPSIS
|
|
.B grep
|
|
[
|
|
.B -bchiLlnsv
|
|
]
|
|
[
|
|
.B -e
|
|
]
|
|
.I pattern
|
|
|
|
|
.B -f
|
|
.I patternfile
|
|
[
|
|
.I file ...
|
|
]
|
|
.br
|
|
.B g
|
|
[
|
|
.B flags
|
|
]
|
|
.I pattern
|
|
[
|
|
.I file ...
|
|
]
|
|
.SH DESCRIPTION
|
|
.I Grep\^
|
|
searches the input
|
|
.I files\^
|
|
(standard input default)
|
|
for lines that match the
|
|
.IR pattern ,
|
|
a regular expression as defined in
|
|
.IR regexp (6)
|
|
with the addition of a newline character as an alternative
|
|
(substitute for
|
|
.BR | )
|
|
with lowest precedence.
|
|
Normally, each line matching the pattern is `selected',
|
|
and each selected line is copied to the standard output.
|
|
.PP
|
|
The options are:
|
|
.TP
|
|
.B -c
|
|
Print only a count of matching lines.
|
|
.TP
|
|
.B -h
|
|
Do not print file name tags (headers) with output lines.
|
|
.TP
|
|
.B -e
|
|
The following argument is taken as a
|
|
.IR pattern .
|
|
This option makes it easy to specify patterns that
|
|
might confuse argument parsing, such as
|
|
.BR -n .
|
|
.TP
|
|
.B -i
|
|
Ignore alphabetic case distinctions. The implementation
|
|
folds into lower case all letters in the pattern and input before
|
|
interpretation. Matched lines are printed in their original form.
|
|
.TP
|
|
.B -l
|
|
(ell) Print the names of files with selected lines; don't print the lines.
|
|
.TP
|
|
.B -L
|
|
Print the names of files with no selected lines;
|
|
the converse of
|
|
.BR -l .
|
|
.TP
|
|
.B -n
|
|
Mark each printed line with its line number counted in its file.
|
|
.TP
|
|
.B -s
|
|
Produce no output, but return status.
|
|
.TP
|
|
.B -v
|
|
Reverse: print lines that do not match the pattern.
|
|
.TP
|
|
.B -f
|
|
The pattern argument is the name of a file containing regular
|
|
expressions one per line.
|
|
.TP
|
|
.B -b
|
|
Don't buffer the output: write each output line as soon as it is discovered.
|
|
.PD
|
|
.PP
|
|
Output lines are tagged by file name when there is more than one
|
|
input file.
|
|
(To force this tagging, include
|
|
.B /dev/null
|
|
as a file name argument.)
|
|
.PP
|
|
Care should be taken when
|
|
using the shell metacharacters
|
|
.B $*[^|()=\e
|
|
and newline
|
|
in
|
|
.IR pattern ;
|
|
it is safest to enclose the
|
|
entire expression
|
|
in single quotes
|
|
.BR \&\|' \|.\|.\|.\| ' .
|
|
An expression starting with '*'
|
|
will treat the rest of the expression
|
|
as literal characters.
|
|
.PP
|
|
.I G\^
|
|
invokes
|
|
.I grep
|
|
with
|
|
.B -n
|
|
(plus additional flags, if provided)
|
|
and forces tagging of output lines by file name. If no files
|
|
are listed, it recursively searches the current directory for
|
|
all files matching
|
|
.B *.b *.c *.C *.h *.l *.m
|
|
.B *.s *.y
|
|
.B *.asm *.awk *.cc *.cgi *.cpp *.cs
|
|
.B *.go *.goc *.hs *.java *.lua *.lx
|
|
.B *.mk *.ml *.mli *.ms *.myr *.pl
|
|
.B *.py *.rc *.sh *.tex *.xy
|
|
.PP
|
|
The recursive search can be suppressed by passing g the
|
|
.B -n
|
|
flag.
|
|
.SH SOURCE
|
|
.B /sys/src/cmd/grep
|
|
.br
|
|
.B /rc/bin/g
|
|
.SH SEE ALSO
|
|
.IR ed (1),
|
|
.IR awk (1),
|
|
.IR sed (1),
|
|
.IR sam (1),
|
|
.IR regexp (6)
|
|
.SH DIAGNOSTICS
|
|
Exit status is null if any lines are selected,
|
|
or non-null when no lines are selected or an error occurs.
|