The egrep command is yet another version of grep (Section
13.2), one that extends the syntax of regular expressions. (Versions where
grep and egrep are the same allow you to get egrep-like behavior from grep
by using the -E
option.) A plus sign (+
) following a regular expression matches one or
more occurrences of the regular expression; a question mark (?
) matches zero or one occurrences. In addition,
regular expressions can be nested within parentheses:
% egrep "Lab(oratorie)?s" name.list
AT&T Bell Laboratories
AT&T Bell Labs
Symtel Labs of Chicago
Parentheses surround a second regular expression and ?
modifies this expression. The nesting helps to eliminate
unwanted matches; for instance, the word Labors or
oratories would not be matched.
Another special feature of egrep is the vertical bar (|
), which serves as an or
operator between two expressions. Lines matching either expression are printed,
as in the next example:
% egrep "stdscr|curscr" ch03
into the stdscr, a character array.
When stdscr is refreshed, the
stdscr is refreshed.
curscr.
initscr( ) creates two windows: stdscr
and curscr.
Remember to put the expression inside quotation marks to protect the vertical bar from being interpreted by the shell as a pipe symbol. Look at the next example:
% egrep "Alcuin (User|Programmer)('s)? Guide" docguide
Alcuin Programmer's Guide is a thorough
refer to the Alcuin User Guide
Alcuin User's Guide introduces new users to
You can see the flexibility that egrep's
syntax can give you, matching either User
or
Programmer
and matching them regardless
of whether they had an 's
.
Both egrep and fgrep can read search patterns from a file using the -f option (Section 13.5).
— DJPD