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)