                        GREP
                        ====

GREP searches a file for a given pattern.  Execute by:

   grep [flags] regular_expression file_list

Flags are single characters preceeded by '-':
   -c      Only a count of matching lines is printed
   -f      Print file name for matching lines switch, see below
   -n      Each line is preceeded by its line number
   -v      Only print non-matching lines
The file_list is a list of files.

The file name is normally printed if there is a file given.
The -f flag reverses this action (print name no file, not if more).

The regular_expression defines the pattern to search for.  Upper- and
lower-case are always ignored.  Blank lines never match.  The expression
should be quoted to prevent file-name translation.

x      An ordinary character (not mentioned below) matches that character.
'\'    The backslash quotes any character.  "\$" matches a dollar-sign.
'^'    A circumflex at the beginning of an expression matches the
       beginning of a line.
'$'    A dollar-sign at the end of an expression matches the end of a line.
'.'    A period matches any character except "new-line".
':a'   A colon matches a class of characters described by the following
':d'     character.  ":a" matches any alphabetic, ":d" matches digits,
':n'     ":n" matches alphanumerics, ": " matches spaces, tabs, and
': '     other control characters, such as new-line.
'*'    An expression followed by an asterisk matches zero or more
       occurrances of that expression: "fo*" matches "f", "fo"
       "foo", etc.
'+'    An expression followed by a plus sign matches one or more
       occurrances of that expression: "fo+" matches "fo", etc.
'-'    An expression followed by a minus sign optionally matches
       the expression.
'[]'   A string enclosed in square brackets matches any character in
       that string, but no others.  If the first character in the
       string is a circumflex, the expression matches any character
       except "new-line" and the characters in the string.  For
       example, "[xyz]" matches "xx" and "zyx", while "[^xyz]"
       matches "abc" but not "axb".  A range of characters may be
       specified by two characters separated by "-".  Note that,
       [a-z] matches alphabetics, while [z-a] never matches.
The concatenation of regular expressions is a regular expression.

History:

Obtained from the CP/M SIG on CompuServe in 1983.  The program
program contained this notice:

   The  information  in  this  document  is  subject  to  change
   without  notice  and  should not be construed as a commitment
   by Digital Equipment Corporation or by DECUS.

   Neither Digital Equipment Corporation, DECUS, nor the authors
   assume any responsibility for the use or reliability of  this
   document or the described software.

        Copyright (C) 1980, DECUS

   General permission to copy or modify, but not for profit,  is
   hereby  granted,  provided that the above copyright notice is
   included and reference made to  the  fact  that  reproduction
   privileges were granted by DECUS.

   Runs on the Decus compiler or on vms.
   Converted for BDS compiler (under CP/M-80), 20-Jan-83, by Chris Kern.

Converted to IBM PC with CI-C86 C Compiler June 1983 by David N. Smith.
(CompuServe 73145,153. Address: 44 Ole Musket Lane, Danbury, CT 06810)
Compiled using DeSmet in November 1983.

