32v 1m grep

From Computer History Wiki
Jump to: navigation, search

GREP(1) UNIX Programmer's Manual GREP(1)


NAME

    grep, egrep, fgrep - search a file for a pattern

SYNOPSIS

    grep [ option ] ...  expression [ file ] ...
    egrep [ option ] ...  [ expression ] [ file ] ...
    fgrep [ option ] ...  [ strings ] [ file ]

DESCRIPTION

    Commands of the _g_r_e_p family search the input _f_i_l_e_s (standard
    input default) for lines matching a pattern.  Normally, each
    line found is copied to the standard output.  _G_r_e_p patterns
    are limited regular expressions in the style of _e_d(1); it
    uses a compact nondeterministic algorithm.  _E_g_r_e_p patterns
    are full regular expressions; it uses a fast deterministic
    algorithm that sometimes needs exponential space.  _F_g_r_e_p
    patterns are fixed strings; it is fast and compact.  The
    following options are recognized.
    -v   All lines but those matching are printed.
    -x   (Exact) only lines matched in their entirety are
         printed (_f_g_r_e_p only).
    -c   Only a count of matching lines is printed.
    -l   The names of files with matching lines are listed
         (once) separated by newlines.
    -n   Each line is preceded by its relative line number in
         the file.
    -b   Each line is preceded by the block number on which it
         was found.  This is sometimes useful in locating disk
         block numbers by context.
    -e _e_x_p_r_e_s_s_i_o_n
         Same as a simple _e_x_p_r_e_s_s_i_o_n argument, but useful when
         the _e_x_p_r_e_s_s_i_o_n begins with a -.
    -f _f_i_l_e
         The regular expression (_e_g_r_e_p) or string list (_f_g_r_e_p)
         is taken from the _f_i_l_e.
    In all cases the file name is shown if there is more than
    one input file.  Care should be taken when using the charac-
    ters $ * [ ^ | ( ) and \ in the _e_x_p_r_e_s_s_i_o_n as they are also
    meaningful to the Shell.  It is safest to enclose the entire
    _e_x_p_r_e_s_s_i_o_n argument in single quotes ' '.
    _F_g_r_e_p searches for lines that contain one of the (newline-
    separated) _s_t_r_i_n_g_s.
    _E_g_r_e_p accepts extended regular expressions.  In the follow-
    ing description `character' excludes newline:
         A \ followed by a single character other than newline
         matches that character.
         The character ^ ($) matches the beginning (end) of a
         line.
         A . matches any character.
         A single character not otherwise endowed with special
         meaning matches that character.
         A string enclosed in brackets [] matches any single
         character from the string.  Ranges of ASCII character
         codes may be abbreviated as in `a-z0-9'.  A ] may occur
         only as the first character of the string.  A literal -
         must be placed where it can't be mistaken as a range
         indicator.
         A regular expression followed by * (+, ?) matches a
         sequence of 0 or more (1 or more, 0 or 1) matches of
         the regular expression.
         Two regular expressions concatenated match a match of
         the first followed by a match of the second.
         Two regular expressions separated by | or newline match
         either a match for the first or a match for the second.
         A regular expression enclosed in parentheses matches a
         match for the regular expression.
    The order of precedence of operators at the same parenthesis
    level is [] then *+? then concatenation then | and newline.

SEE ALSO

    ed(1), sed(1), sh(1)

DIAGNOSTICS

    Exit status is 0 if any matches are found, 1 if none, 2 for
    syntax errors or inaccessible files.

BUGS

    Ideally there should be only one _g_r_e_p, but we don't know a
    single algorithm that spans a wide enough range of space-
    time tradeoffs.
    Lines are limited to 256 characters; longer lines are trun-
    cated.