Fork me on GitHub

Project Notes

#461 sed & awk

Book notes - sed & awk 2nd Edition, by Dale Dougherty, Arnold Robbins. First published November 8, 1990.

Notes

cover

Contents

  • 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
  • 2: Understanding Basic Operations
    • Awk, by Sed and Grep, out of Ed Command-Line Syntax
    • Using sed
    • Using awk
    • Using sed and awk Together
  • 3: Understanding Regular Expression Syntax
    • That’s an Expression
    • A Line-Up of Characters
    • I Never Metacharacter I Didn’t Like
  • 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
  • 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
  • 6: Advanced sed Commands
    • Multiline Pattern Space
    • A Case for Study Hold That Line
    • Advanced Flow Control Commands
    • To Join a Phrase
  • 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
  • 8: Conditionals, Loops, and Arrays
    • Conditional Statements
    • Looping
    • Other Statements That Affect Flow Control
    • Arrays
    • An Acronym Processor
    • System Variables That Are Arrays
  • 9: Functions
    • Arithmetic Functions
    • String Functions
    • Writing Your Own Functions
  • 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
    • Invoking awk Using the #! Syntax
  • 11: A Flock of awks
    • Original awk
    • Freely Available awks
    • Commercial awks
    • Epilogue
  • 12: Full-Featured Applications
    • An Interactive Spelling Checker
    • Generating a Formatted Index
    • Spare Details of the masterindex Program
  • 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—Ipr Preprocessor
    • transpose—Perform a Matrix Transposition
    • m1-Simple Macro Processor
  • A: Quick Reference for sed
  • B: Quick Reference for awk
  • C: Supplement for Chapter 12

Source Code

Example sources are maintained on https://resources.oreilly.com/examples/9781565922259/ Cloning to an example_source folder:

git clone https://resources.oreilly.com/examples/9781565922259/ example_source

Credits and References

About LCK#461
Booksawksed

This page is a web-friendly rendering of my project notes shared in the LittleCodingKata GitHub repository.

Project Source on GitHub Return to the LittleCodingKata Catalog
About LittleCodingKata

LittleCodingKata is my collection of programming exercises, research and code toys broadly spanning things that relate to programming and software development (languages, frameworks and tools).

These range from the trivial to the complex and serious. Many are inspired by existing work and I'll note credits and references where applicable. The focus is quite scattered, as I variously work on things new and important in the moment, or go back to revisit things from the past.

This is primarily a personal collection for my own edification and learning, but anyone who stumbles by is welcome to borrow, steal or reference the work here. And if you spot errors or issues I'd really appreciate some feedback - create an issue, send me an email or even send a pull-request.

Follow the Blog follow projects and notes as they are published in your favourite feed reader