awk refers to a particular program as well as to the language you
use to tell this program what to do. When we need to be careful, we call
the language “the
and the program “the
This Web page explains
both how to write programs in the
awk language and how to
The term “
awk program” refers to a program written by you in
awk programming language.
Primarily, this Web page explains the features of
as defined in the POSIX standard. It does so in the context of the
gawk implementation. While doing so, it also
attempts to describe important differences between
Finally, it notes any
gawk features that are not in
the POSIX standard for
This Web page has the difficult task of being both a tutorial and a reference. If you are a novice, feel free to skip over details that seem too complex. You should also ignore the many cross-references; they are for the expert user and for the Info and HTML versions of the Web page.
There are sidebars scattered throughout the Web page. They add a more complete explanation of points that are relevant, but not likely to be of interest on first reading. All appear in the index, under the heading “sidebar.”
Most of the time, the examples use complete
Some of the more advanced sections show only the part of the
program that illustrates the concept being described.
Although this Web page is aimed principally at people who have not been
awk, there is a lot of information here that even the
expert should find useful. In particular, the description of POSIX
awk and the example programs in
A Library of
awk Functions, and
should be of interest.
This Web page is split into several parts, as follows:
awklanguage and the
gawkprogram in detail. It starts with the basics, and continues through all of the features of
awk. It contains the following chapters:
awk, provides the essentials you need to know to begin using
gawk, describes how to run
gawk, the meaning of its command-line options, and how it finds
awkprogram source files.
awkreads your data. It introduces the concepts of records and fields, as well as the
getlinecommand. I/O redirection is first described here. Network I/O is also briefly introduced here.
awkprograms can produce output with
awk’s one-and-only data structure: the associative array. Deleting array elements and whole arrays is described, as well as sorting arrays in
gawk. The chapter also describes how
gawkprovides arrays of arrays.
gawkprovide, as well as how to define your own functions. It also discusses how
gawklets you call functions indirectly.
gawkfor problem solving. There is lots of code here for you to read and learn from. This part contains the following chapters:
awkFunctions, provides a number of functions meant to be used from main
awkPrograms, provides many sample
Reading these two chapters allows you to see
solving real problems.
gawk. It contains the following chapters:
gawk, describes a number of advanced features. Of particular note are the abilities to control the order of array traversal, have two-way communications with another process, perform TCP/IP networking, and profile your
gawk, describes special features for translating program messages into different languages at runtime.
awkPrograms, describes the
gawk, describes how
gawkallows variables and/or functions of the same name to be in different namespaces.
gawk, describes advanced arithmetic facilities.
gawk, describes how to add new variables and functions to
gawkby writing extensions in C or C++.
gawksource code and this Web page, respectively. It contains the following appendices:
awkLanguage, describes how the
awklanguage has evolved since its first release to the present. It also describes how
gawkhas acquired features over time.
gawk, describes how to get
gawk, how to compile it on POSIX-compatible systems, and how to compile and use it on different non-POSIX systems. It also describes how to report bugs in
gawkand where to get other freely available
gawk’s extensions, as well as how to contribute new code to
gawk, and some possible future directions for
gawksource code and this Web page, respectively.
All such differences
appear in the index under the
entry “differences in