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 Page 1 Plan 9 (printed 12/21/24) GREP(1) GREP(1) 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 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 *.c *.C *.h *.l *.m *.s *.y *.asm *.awk *.cc *.cgi *.cpp *.cs *.cxx *.go *.goc *.hpp *.hs *.hxx *.in *.java *.lua *.lx *.mk *.ml *.mli *.ms *.myr *.pl *.py *.rc *.sh *.tex *.txt *.xy 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 12/21/24)