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