# Chapter 7. Writing Scripts for awk

#### Contents:

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

As mentioned in the preface, this book describes POSIX awk; that is, the awk language as specified by the POSIX standard. Before diving into the details, we'll provide a bit of history.

The original awk was a nice little language. It first saw the light of day with Version 7 UNIX, around 1978. It caught on, and people used it for significant programming.

In 1985, the original authors, seeing that awk was being used for more serious programming than they had ever intended, decided to beef up the language. (See Chapter 11, "A Flock of awks", for a description of the original awk, and all the things it did not have when compared to the new one.) The new version was finally released to the world at large in 1987, and it is this version that is still found on SunOS 4.1.x systems.

In 1989, for System V Release 4, awk was updated in some minor ways.[40] This version became the basis for the awk feature list in the POSIX standard. POSIX clarified a number of things about awk, and added the CONVFMT variable (to be discussed later in this chapter).

> [40]The -v option and tolower() and toupper() functions were added, and srand() and printf were cleaned up. The details will be presented in this and the following chapters.

As you read the rest of this book, bear in mind that the term awk refers to POSIX awk, and not to any particular implementation, whether the original one from Bell Labs, or any of the others discussed in Chapter 11, "A Flock of awks". However, in the few cases where different versions have fundamental differences of behavior, that will be pointed out in the main body of the discussion.

## 7.1. Playing the Game

To write an awk script, you must become familiar with the rules of the game. The rules can be stated plainly and you will find them described in Appendix B, "Quick Reference for awk", rather than in this chapter. The goal of this chapter is not to describe the rules but to show you how to play the game. In this way, you will become acquainted with many of the features of the language and see examples that illustrate how scripts actually work. Some people prefer to begin by reading the rules, which is roughly equivalent to learning to use a program from its manual page or learning to speak a language by scanning its rules of grammar--not an easy task. Having a good grasp of the rules, however, is essential once you begin to use awk regularly. But the more you use awk, the faster the rules of the game become second nature. You learn them through trial and error--spending a long time trying to fix a silly syntax error such as a missing space or brace has a magical effect upon long-term memory. Thus, the best way to learn to write scripts is to begin writing them. As you make progress writing scripts, you will no doubt benefit from reading the rules (and rereading them) in Appendix B, "Quick Reference for awk" or the awk manpage or The AWK Programming Language book. You can do that later--let's get started now.

Copyright © 2003 O'Reilly & Associates. All rights reserved.