About Us Documentation

Contact Site Map



Go to the next chapter.

This file documents awk, a program that you can use to select particular records in a file and perform operations upon them.

This is Edition 0.15 of The GAWK Manual, for the 2.15 version of the GNU implementation of AWK.

  • Preface: What you can do with awk; brief history and acknowledgements.
  • Copying: Your right to copy and distribute gawk.
  • This Manual: Using this manual. Includes sample input files that you can use.
  • Getting Started: A basic introduction to using awk. How to run an awk program. Command line syntax.
  • Reading Files: How to read files and manipulate fields.
  • Printing: How to print using awk. Describes the print and printf statements. Also describes redirection of output.
  • One-liners: Short, sample awk programs.
  • Patterns: The various types of patterns explained in detail.
  • Actions: The various types of actions are introduced here. Describes expressions and the various operators in detail. Also describes comparison expressions.
  • Expressions: Expressions are the basic building blocks of statements.
  • Statements: The various control statements are described in detail.
  • Arrays: The description and use of arrays. Also includes array-oriented control statements.
  • Built-in: The built-in functions are summarized here.
  • User-defined: User-defined functions are described in detail.
  • Built-in Variables: Built-in Variables
  • Command Line: How to run gawk.
  • Language History: The evolution of the awk language.
  • Installation: Installing gawk under various operating systems.
  • Gawk Summary: gawk Options and Language Summary.
  • Sample Program: A sample awk program with a complete explanation.
  • Bugs: Reporting Problems and Bugs.
  • Notes: Something about the implementation of gawk.
  • Glossary: An explanation of some unfamiliar terms.
  • Index


If you are like many computer users, you would frequently like to make changes in various text files wherever certain patterns appear, or extract data from parts of certain lines while discarding the rest. To write a program to do this in a language such as C or Pascal is a time-consuming inconvenience that may take many lines of code. The job may be easier with awk.

The awk utility interprets a special-purpose programming language that makes it possible to handle simple data-reformatting jobs easily with just a few lines of code.

The GNU implementation of awk is called gawk; it is fully upward compatible with the System V Release 4 version of awk. gawk is also upward compatible with the POSIX (draft) specification of the awk language. This means that all properly written awk programs should work with gawk. Thus, we usually don't distinguish between gawk and other awk implementations in this manual.

This manual teaches you what awk does and how you can use awk effectively. You should already be familiar with basic system commands such as ls. Using awk you can:

  • manage small, personal databases
  • generate reports
  • validate data
  • produce indexes, and perform other document preparation tasks
  • even experiment with algorithms that can be adapted later to other computer languages
  • History: The history of gawk and awk. Acknowledgements.

History of awk and gawk

The name awk comes from the initials of its designers: Alfred V. Aho, Peter J. Weinberger, and Brian W. Kernighan. The original version of awk was written in 1977. In 1985 a new version made the programming language more powerful, introducing user-defined functions, multiple input streams, and computed regular expressions. This new version became generally available with System V Release 3.1. The version in System V Release 4 added some new features and also cleaned up the behavior in some of the ``dark corners'' of the language. The specification for awk in the POSIX Command Language and Utilities standard further clarified the language based on feedback from both the gawk designers, and the original awk designers.

The GNU implementation, gawk, was written in 1986 by Paul Rubin and Jay Fenlason, with advice from Richard Stallman. John Woods contributed parts of the code as well. In 1988 and 1989, David Trueman, with help from Arnold Robbins, thoroughly reworked gawk for compatibility with the newer awk. Current development (1992) focuses on bug fixes, performance improvements, and standards compliance.

We need to thank many people for their assistance in producing this manual. Jay Fenlason contributed many ideas and sample programs. Richard Mlynarik and Robert J. Chassell gave helpful comments on early drafts of this manual. The paper A Supplemental Document for awk by John W. Pierce of the Chemistry Department at UC San Diego, pinpointed several issues relevant both to awk implementation and to this manual, that would otherwise have escaped us. David Trueman, Pat Rankin, and Michal Jaegermann also contributed sections of the manual.

The following people provided many helpful comments on this edition of the manual: Rick Adams, Michael Brennan, Rich Burridge, Diane Close, Christopher (``Topher'') Eliot, Michael Lijewski, Pat Rankin, Miriam Robbins, and Michal Jaegermann. Robert J. Chassell provided much valuable advice on the use of Texinfo.

Finally, we would like to thank Brian Kernighan of Bell Labs for invaluable assistance during the testing and debugging of gawk, and for help in clarifying numerous points about the language.



Email addresses listed on this site may  NOT be used for unsolicited commercial email.

Ready-to-Run Software, Inc Privacy Statement

Portions (c)Copyright, 1996-2005 by Ready-to-Run Software, Inc
(All rights reserved.)
212 Cedar Cove
Lansing, NY 14882
Phone: 607 533 UNIX (8649)
Fax: 607 533 4002