


GREP(1)							GREP(1)


NNAAMMEE
       grep, egrep, fgrep - print lines matching a pattern

SSYYNNOOPPOOSSIISS
       ggrreepp [ --[[AABB] ]_n_u_m ] [ --[CCEEFFGGVVBBcchhiillnnssvvwwxx] ] [ --ee ] _p_a_t_t_e_r_n
       | --ff_f_i_l_e ] [ _f_i_l_e_s_._._.  ]

DDEESSCCRRIIPPTTIIOONN
       GGrreepp searches the named input _f_i_l_e_s (or standard input  if
       no files are named, or the file name -- is given) for lines
       containing a match to the given _p_a_t_t_e_r_n.	By default, ggrreepp
       prints the matching lines.

       There  are three major variants of ggrreepp, controlled by the
       following options.
       --GG     Interpret _p_a_t_t_e_r_n as  a  basic  regular  expression
	      (see below).  This is the default.
       --EE     Interpret _p_a_t_t_e_r_n as an extended regular expression
	      (see below).
       --FF     Interpret _p_a_t_t_e_r_n as a list of fixed strings, sepa-
	      rated by newlines, any of which is to be matched.
       In  addition,  two  variant  programs  eeggrreepp and ffggrreepp are
       available.  EEggrreepp  is  similiar	(but  not  identical)  to
       ggrreepp --EE, and is compatible with the historical Unix eeggrreepp.
       FFggrreepp is the same as ggrreepp --FF.

       All variants of ggrreepp understand the following options:
       --_n_u_m   Matches will be printed with _n_u_m lines  of  leading
	      and  trailing  context.	However,  ggrreepp will never
	      print any given line more than once.
       --AA _n_u_m Print _n_u_m lines of trailing context after	matching
	      lines.
       --BB _n_u_m Print  _n_u_m lines of leading context before matching
	      lines.
       --CC     Equivalent to --22.
       --VV     Print the version number of ggrreepp to standard error.
	      This  version  number should be included in all bug
	      reports (see below).
       --bb     Print the byte offset within the input file  before
	      each line of output.
       --cc     Suppress	normal	output;	instead print a count of
	      matching lines for each input file.   With  the  --vv
	      option (see below), count non-matching lines.
       --ee _p_a_t_t_e_r_n
	      Use  _p_a_t_t_e_r_n as the pattern; useful to protect pat-
	      terns beginning with --.
       --ff _f_i_l_e
	      Obtain the pattern from _f_i_l_e.
       --hh     Suppress the prefixing of filenames on output  when
	      multiple files are searched.
       --ii     Ignore  case  distinctions  in both the _p_a_t_t_e_r_n and
	      the input files.
       --LL     Suppress normal output; instead print the	name  of
	      each input file from which no output would normally



GNU Project		1992 September 10			1





GREP(1)							GREP(1)


	      have been printed.
       --ll     Suppress normal output; instead print the	name  of
	      each  input  file	from which output would normally
	      have been printed.
       --nn     Prefix each line of output  with	the  line  number
	      within its input file.
       --qq     Quiet; suppress normal output.
       --ss     Suppress	error	messages  about  nonexistent  or
	      unreadable files.
       --vv     Invert  the  sense  of  matching,	to  select  non-
	      matching lines.
       --ww     Select  only  those  lines  containing matches that
	      form whole words.	The test is  that  the	matching
	      substring	must  either  be at the beginning of the
	      line, or preceded by a non-word constituent charac-
	      ter.   Similarly,	it  must be either at the end of
	      the line or  followed  by	a  non-word  constituent
	      character.   Word-constituent  characters	are let-
	      ters, digits, and the underscore.
       --xx     Select only those matches that  exactly  match  the
	      whole line.

RREEGGUULLAARR EEXXPPRREESSSSIIOONNSS
       A  regular expression is a pattern that describes a set of
       strings.	Regular expressions are constructed  analagously
       to  arithmetic  expressions, by using various operators to
       combine smaller expressions.

       GGrreepp understands two different versions of regular expres-
       sion  syntax:  ``basic''	and  ``extended.''  In GNU ggrreepp,
       there is no difference in  available  functionality  using
       either  syntax.	In  other implementations, basic regular
       expressions are less powerful.  The following  description
       applies	to  extended regular expressions; differences for
       basic regular expressions are summarized afterwards.

       The fundamental building blocks are  the	regular  expres-
       sions  that  match  a  single character.	Most characters,
       including all letters and digits, are regular  expressions
       that  match  themselves.	Any  metacharacter with special
       meaning may be quoted by preceding it with a backslash.

       A list of characters enclosed by [[ and ]] matches any  sin-
       gle  character in that list; if the first character of the
       list is the caret ^^ then it matches any character  _n_o_t  in
       the   list.    For   example,   the   regular   expression
       [[00112233445566778899]] matches any single digit.  A range	of  ASCII
       characters  may	be specified by giving the first and last
       characters, separated by a hyphen.  Finally, certain named
       classes	of  characters	are  predefined.  Their names are
       self  explanatory,  and	they  are  [[::aallnnuumm::]],  [[::aallpphhaa::]],
       [[::ccnnttrrll::]],  [[::ddiiggiitt::]],  [[::ggrraapphh::]],  [[::lloowweerr::]],  [[::pprriinntt::]],
       [[::ppuunncctt::]],  [[::ssppaaccee::]],  [[::uuppppeerr::]],  and	[[::xxddiiggiitt::]]..   For
       example,	[[[[::aallnnuumm::]]]] means [[00--99AA--ZZaa--zz]], except the latter



GNU Project		1992 September 10			2





GREP(1)							GREP(1)


       form is	dependent  upon	the  ASCII  character	encoding,
       whereas	the  former is portable.  (Note that the brackets
       in these class names are part of the symbolic  names,  and
       must  be	included  in addition to the brackets delimiting
       the bracket list.)  Most metacharacters lose their special
       meaning	inside	lists.	To  include a literal ]] place it
       first in the list.  Similarly,  to  include  a  literal	^^
       place  it  anywhere but first.  Finally, to include a lit-
       eral -- place it last.

       The period ..  matches any single character.  The symbol \\ww
       is  a  synonym  for  [[[[::aallnnuumm::]]]]	and  \\WW is a synonym for
       [[^^[[::aallnnuumm]]]].

       The caret ^^ and the dollar sign $$ are metacharacters  that
       respectively  match  the empty string at the beginning and
       end of a line.  The symbols \\<< and \\>>  respectively  match
       the  empty string at the beginning and end of a word.  The
       symbol \\bb matches the empty string at the edge of a  word,
       and  \\BB	matches the empty string provided it's _n_o_t at the
       edge of a word.

       A regular expression matching a single  character  may  be
       followed by one of several repetition operators:
       ??      The  preceding item is optional and matched at most
	      once.
       **      The preceding item will be  matched  zero	or  more
	      times.
       ++      The  preceding  item  will  be  matched one or more
	      times.
       {{_n}}    The preceding item is matched exactly _n times.
       {{_n,,}}   The preceding item is matched _n or more times.
       {{,,_m}}   The preceding item is optional and  is  matched  at
	      most _m times.
       {{_n,,_m}}  The preceding item is matched at least _n times, but
	      not more than _m times.

       Two regular expressions may be concatenated; the resulting
       regular	expression  matches any string formed by concate-
       nating two substrings that respectively match the concate-
       nated subexpressions.

       Two  regular expressions may be joined by the infix opera-
       tor ||; the resulting regular expression matches any string
       matching either subexpression.

       Repetition  takes  precedence over concatenation, which in
       turn takes precedence over alternation.	A  whole  subex-
       pression	may be enclosed in parentheses to override these
       precedence rules.

       The backreference \\_n, where _n is a single  digit,  matches
       the  substring previously matched by the _nth parenthesized
       subexpression of the regular expression.



GNU Project		1992 September 10			3





GREP(1)							GREP(1)


       In basic regular expressions the metacharacters ??,  ++,  {{,
       ||,  ((,  and  )) lose their special meaning; instead use the
       backslashed versions \\??, \\++, \\{{, \\||, \\((, and \\)).

       In eeggrreepp the metacharacter {{ loses  its	special	meaning;
       instead use \\{{.

DDIIAAGGNNOOSSTTIICCSS
       Normally, exit status is 0 if matches were found, and 1 if
       no matches were found.  (The --vv option inverts  the  sense
       of  the exit status.)  Exit status is 2 if there were syn-
       tax errors in the pattern, inaccessible	input  files,  or
       other system errors.

BBUUGGSS
       Email  bug  reports  to bbuugg--ggnnuu--uuttiillss@@pprreepp..aaii..mmiitt..eedduu.  Be
       sure to include the word ``grep'' somewhere in the  ``Sub-
       ject:'' field.

       Large  repetition  counts in the {{_m,,_n}} construct may cause
       grep to use lots of memory.  In	addition,  certain  other
       obscure	regular	expressions require exponential time and
       space, and may cause ggrreepp to run out of memory.

       Backreferences are very slow, and may require  exponential
       time.































GNU Project		1992 September 10			4


