e?grep version 1.3 -rw-rw-r-- 1 gray 79925 Sep 25 15:17 grep.lzh GNU e?grep is 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.) GNU e?grep attempts, as closely as possible, to understand compatibly the regexp syntaxes of the Unix programs it replaces. The following table details the various special characters understood in both the grep and egrep incarnations: (grep) (egrep) (explanation) . . 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 [chars] [chars] 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 -; for example, \W (below) is equivalent to the class [^A-Za-z0-9] \( \) ( ) parentheses are used to override operator precedence \<1-9> \<1-9> \ 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, a comment in dfa.c describes the exact grammar understood by the parser. GNU e?grep understands the following command line options: -A print lines of context after every matching line -B print lines of context before every matching line -C print 2 lines of context on each side of every match - print lines of context on each side -V print the version number on stderr -b print every match preceded by its byte offset -c print a total count of matching lines only -e search for ; useful if begins with - -f take from the given -h don't display filenames on matches -i ignore case difference when comparing strings -l list files containing matches only -n print each match preceded by its line number