sed & awk, 2nd edition by Dale Doherty and Arnold Robbins The following corrections were made to the 8/08 reprint: Here's a key to the markup: [page-number]: serious technical mistake {page-number}: minor technical mistake : important language/formatting problem (page-number): language change or minor formatting problem (39) table; In the table for character classes, [:alnum:] should match "Alphanumeric Characters", not "Printable characters (includes whitespace)". {48} Last paragraph first line; Should read: $ grep " [\"[{(]*book[]})\"?\!.,;:'s]* " bookwords (This change escapes the exclamation point. It's needed only if you use bash or csh as your shell. At the time I wrote it, I was using ksh which doesn't have the problem.) {133} IN PRINT: Code sample at bottom of page, lines 10 and 15 SHOULD BE: "$!N" (248) Last paragraph first first sentence; If a program has a number of branching constructs, you might find that an input line falls through one of branches. Should read: If a program has a number of branching constructs, you might find that an input line falls through one of the branches. [272] Code in 1st and 3rd paragrah; the contents should show: $ cat querylog mary:another.domain.org:831312546 arnold:some.domain.com:831322007 arnold:some.domain.com:831324598 arnold:some.domain.com:831327215 mary:another.domain.org:831346231 and then in the next example, when the program is run, the results should be: $ gawk -f cgiformat.awk /var/log/cgi/querylog mary@another.domain.org -> 2 times between 96-05-05 12:09 and 96-05-05 21:30 arnold@some.domain.com -> 3 times between 96-05-05 14:46 and 96-05-05 16:13