sed & awk describes two text processing programs that are mainstays of the UNIX programmer's toolbox. sed is a "stream editor" for editing streams of text that might be too large to edit as a single file, or that might be generated on the fly as part of a larger data processing step. The most common operation done with sed is substitution, replacing one block of text with another. awk is a complete programming language. Unlike many conventional languages, awk is "data driven" -- you specify what kind of data you are interested in and the operations to be performed when that data is found. awk does many things for you, including automatically opening and closing data files, reading records, breaking the records up into fields, and counting the records. While awk provides the features of most conventional programming languages, it also includes some unconventional features, such as extended regular expression matching and associative arrays. sed & awk describes both programs in detail and includes a chapter of example sed and awk scripts. This edition covers features of sed and awk that are mandated by the POSIX standard.
This most notably affects awk, where POSIX standardized a new variable, CONVFMT, and new functions, toupper() and tolower(). The CONVFMT variable specifies the conversion format to use when converting numbers to strings (awk used to use OFMT for this purpose). The toupper() and tolower() functions each take a (presumably mixed case) string argument and return a new version of the string with all letters translated to the corresponding case. In addition, this edition covers GNU sed, newly available since the first edition. It also updates the first edition coverage of Bell Labs nawk and GNU awk (gawk), covers mawk, an additional freely available implementation of awk, and briefly discusses three commercial versions of awk, MKS awk, Thompson Automation awk (tawk), and Videosoft (VSAwk).
Dale Dougherty is president and CEO of Songline Studios, a leading web publishing company. He is editor and publisher of Web Review (webreview.com), an innovative online magazine for web site developers. Prior to Songline, Dougherty developed the Global Network Navigator (GNN) and was the founding editor for O'Reilly's Nutshell Handbooks (R). Arnold Robbins, an Atlanta native, is a professional programmer and technical author. He has been working with UNIX systems since 1980, when he was intoduced to a PDP-11 running a version of Sixth Edition UNIX. He has been a heavy awk user since 1987, when he became involved with gawk, the GNU project's version of awk. As a member of the POSIX 1003.2 balloting group, he helped shape the POSIX standard for awk. He is currently the maintainer of gawk and its documentation. The documentation is available from the Free Software Foundation (http://www.gnu.org) and has also been published by SSC (http://www.ssc.com) as "Effective AWK Programming." He is also co-author of the sixth edition of O'Reilly's Learning the vi Editor. Since late 1997, he and his family have been living happily in Israel.
Preface Chapter 1. Power Tools for Editing May You Solve Interesting Problems A Stream Editor A Pattern-Matching Programming Language Four Hurdles to Mastering sed and awk Chapter 2. Understanding Basic Operations Awk, by Sed and Grep, out of Ed Command-Line Syntax Using sed Using awk Using sed and awk Together Chapter 3. Understanding Regular Expression Syntax That's an Expression A Line-Up of Characters I Never Metacharacter I Didn't Like Chapter 4. Writing sed Scripts Applying Commands in a Script A Global Perspective on Addressing Testing and Saving Output Four Types of sed Scripts Getting to the PromiSed Land Chapter 5. Basic sed Commands About the Syntax of sed Commands Comment Substitution Delete Append, Insert, and Change List Transform Print Print Line Number Next Reading and Writing Files Quit Chapter 6. Advanced sed Commands Multiline Pattern Space A Case for Study Hold That Line Advanced Flow Control Commands To Join a Phrase Chapter 7. Writing Scripts for awk Playing the Game Hello, World Awk's Programming Model Pattern Matching Records and Fields Expressions System Variables Relational and Boolean Operators Formatted Printing Passing Parameters Into a Script Information Retrieval Chapter 8. Conditionals, Loops, and Arrays Conditional Statements Looping Other Statements That Affect Flow Control ArraysAn Acronym Processor System Variables That Are Arrays Chapter 9. Functions Arithmetic Functions String Functions Writing Your Own Functions Chapter 10. The Bottom Drawer The getline Function The close() Function The system() Function A Menu-Based Command Generator Directing Output to Files and Pipes Generating Columnar Reports Debugging Limitations Chapter 11. A Flock of awks Original awk Freely Available awks Commercial awks Epilogue Chapter 12. Full-Featured Applications An Interactive Spelling Checker Generating a Formatted Index Spare Details of the masterindex Program Chapter 13. A Miscellany of Scripts uutot.awk--Report UUCP Statistics phonebill--Track Phone Usage combine--Extract Multipart uuencoded Binaries mailavg--Check Size of Mailboxes adj--Adjust Lines for Text Files readsource--Format Program Source Files for troff gent--Get a termcap Entry plpr--lpr Preprocessor transpose--Perform a Matrix Transposition m1--Simple Macro Processor Appendix A. Quick Reference for sed Appendix B. Quick Reference for awk Appendix C. Supplement for Chapter 12 Index