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 character as an alternative (substitute for |) with lowest precedence. 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 implementation 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.

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 *.s *.y *.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

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.