home *** CD-ROM | disk | FTP | other *** search
-
- NNAAMMEE
- grep, egrep - print lines matching a regular expression
-
- SSYYNNOOPPSSIISS
- ggrreepp [-CVbchilnsvwx] [-_n_u_m] [-AB _n_u_m] [[-e] _e_x_p_r | -f _f_i_l_e]
- [_f_i_l_e_s ...]
-
- IIMMPPOORRTTAANNTT NNOOTTEE
- The ggrreepp in question is the GNU ee??ggrreepp, based on a fast lazy-state
- deterministic matcher (about twice as fast as stock Unix egrep)
- hybridized with a Boyer-Moore-Gosper search for a fixed string that
- eliminates impossible text from being considered by the full regexp
- matcher without necessarily having to look at every character. The
- result is typically many times faster than Unix grep or egrep.
- (Regular expressions containing backreferencing may run more
- slowly, however.)
-
- DDEESSCCRRIIPPTTIIOONN
- ggrreepp searches the files listed in the arguments (or standard input
- if no files are given) for all lines that contain a match for the
- given _e_x_p_r. If any lines match, they are printed.
-
- Also, if any matches were found, ggrreepp will exit with a status of 0,
- but if no matches were found it will exit with a status of 1. This
- is useful for building shell scripts that use ggrreepp as a condition
- for, for example, the _I_F_ _E_R_R_O_R_L_E_V_E_L_ _._._. statement.
-
- When invoked as eeggrreepp the syntax of the _e_x_p_r is slightly different;
- see below.
-
- RREEGGUULLAARR EEXXPPRREESSSSIIOONNSS
- (grep) (egrep) (explanation)
-
- _c _c a single (non-meta) character matches itself.
-
- . . matches any single character except newline.
-
- ? ? postfix operator; preceeding item is optional.
-
- * * postfix operator; preceeding item 0 or more
- times.
-
- + + postfix operator; preceeding item 1 or more
- times.
-
- | | infix operator; matches either argument.
-
- ^ ^ matches the empty string at the beginning of a
- line.
-
- $ $ matches the empty string at the end of a line.
-
- < < matches the empty string at the beginning of a
- word.
-
- > > matches the empty string at the end of a word.
-
- [_c_h_a_r_s] [_c_h_a_r_s] match any character in the given class; if the
- first character after [ is ^, match any character
- not in the given class; a range of characters
- may be specified by _f_i_r_s_t-_l_a_s_t; for example, W
- (below) is equivalent to the class [^A-Za-z0-9]
-
- ( ) ( ) parentheses are used to override operator
- precedence.
-
- \_d_i_g_i_t \_d_i_g_i_t \_n matches a repeat of the text matched earlier
- in the regexp by the subexpression inside the _nth
- opening parenthesis.
-
- \ \ any special character may be preceded by a
- backslash to match it literally.
-
- (the following are for compatibility with GNU Emacs)
-
- \b \b matches the empty string at the edge of a word.
-
- \B \B matches the empty string if not at the edge of a
- word.
-
- \w \w matches word-constituent characters (letters &
- digits).
-
- \W \W matches characters that are not word-constituent.
-
- Operator precedence is (highest to lowest) ?, *, and +,
- concatenation, and finally |. All other constructs are
- syntactically identical to normal characters. For the truly
- interested, the file dfa.c describes (and implements) the exact
- grammar understood by the parser.
-
- OOPPTTIIOONNSS
- --AA _n_u_m print _n_u_m lines of context after every matching line
-
- --BB _n_u_m print _n_u_m lines of context before every matching line
-
- --CC print 2 lines of context on each side of every match
-
- -_n_u_m print _n_u_m lines of context on each side of every match
-
- --VV print the version number on the diagnostic output
-
- --bb print every match preceded by its byte offset
-
- --cc print a total count of matching lines only
-
- --ee _e_x_p_r search for _e_x_p_r; useful if _e_x_p_r begins with -
-
- --ff _f_i_l_e search for the expression contained in _f_i_l_e
-
- --hh don't display filenames on matches
-
- --ii ignore case difference when comparing strings
-
- --ll list files containing matches only
-
- --nn print each match preceded by its line number
-
- --ss run silently producing no output except error messages
-
- --vv print only lines that contain no matches for the <expr>
-
- --ww print only lines where the match is a complete word
-
- --xx print only lines where the match is a whole line
-
- IINNCCOOMMPPAATTIIBBIILLIITTIIEESS
- The following incompatibilities with UNIX _g_r_e_p exist:
-
- The context-dependent meaning of * is not quite the same (grep
- only).
-
- -b prints a byte offset instead of a block offset.
-
- The {_m,_n} construct of System V grep is not implemented.
-
- BBUUGGSS
- GNU _e_?_g_r_e_p has been thoroughly debugged and tested by several
- people over a period of several months; we think it's a reliable
- beast or we wouldn't distribute it. If by some fluke of the
- universe you discover a bug, send a detailed description (including
- options, regular expressions, and a copy of an input file that can
- reproduce it) to me, mike@wheaties.ai.mit.edu.
-
- There is also a newsgroup, gnu.utils.bug, for reporting FSF utility
- programs' bugs and fixes; but before reporting something as a bug,
- please try to be sure that it really is a bug, not a
- misunderstanding or a deliberate feature. Also, include the
- version number of the utility program you are running in _e_v_e_r_y bug
- report that you send in. Please do not send anything but bug
- reports to this newsgroup.
-
- AAVVAAIILLAABBIILLIITTYY
- GNU ggrreepp is free; anyone may redistribute copies of ggrreepp to anyone
- under the terms stated in the GNU General Public License, a copy of
- which may be found in each copy of _G_N_U_ _E_m_a_c_s. See also the comment
- at the beginning of the source code file grep.c.
-
- Copies of GNU ggrreepp may sometimes be received packaged with
- distributions of Unix systems, but it is never included in the
- scope of any license covering those systems. Such inclusion
- violates the terms on which distribution is permitted. In fact,
- the primary purpose of the General Public License is to prohibit
- anyone from attaching any other restrictions to redistribution of
- any of the Free Software Foundation programs.
-
- AAUUTTHHOORRSS
- Mike Haertel wrote the deterministic regexp code and the bulk of
- the program.
-
- James A. Woods is responsible for the hybridized search strategy of
- using Boyer-Moore-Gosper fixed-string search as a filter before
- calling the general regexp matcher.
-
- Arthur David Olson contributed code that finds fixed strings for
- the aforementioned BMG search for a large class of regexps.
-
- Richard Stallman wrote the backtracking regexp matcher that is used
- for \_d_i_g_i_t backreferences, as well as the getopt that is provided
- for 4.2BSD sites. The backtracking matcher was originally written
- for GNU Emacs.
-
- D. A. Gwyn wrote the C alloca emulation that is provided so System
- V machines can run this program. (Alloca is used only by RMS'
- backtracking matcher, and then only rarely, so there is no loss if
- your machine doesn't have a "real" alloca.)
-
- Frank Whaley has ported the software to "toy" operating systems
- such as MS-DOS and OS/2.
-
- Scott Anderson and Henry Spencer designed the regression tests used
- in the "regress" script.
-
- Paul Placeway wrote the original version of this manual page.
-
-