The term 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 awk
language,”
and the program “the awk
utility.”
This Web page explains
both how to write programs in the awk
language and how to
run the awk
utility.
The term “awk
program” refers to a program written by you in
the awk
programming language.
Primarily, this Web page explains the features of awk
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 gawk
and other awk
implementations.5
Finally, it notes any gawk
features that are not in
the POSIX standard for awk
.
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 awk
programs.
Some of the more advanced sections show only the part of the awk
program that illustrates the concept being described.
Although this Web page is aimed principally at people who have not been
exposed
to awk
, there is a lot of information here that even the awk
expert should find useful. In particular, the description of POSIX
awk
and the example programs in
A Library of awk
Functions, and
in
Practical awk
Programs,
should be of interest.
This Web page is split into several parts, as follows:
awk
language and the gawk
program 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 awk
.
awk
and gawk
,
describes how to run gawk
, the meaning of its
command-line options, and how it finds awk
program source files.
awk
and gawk
.
awk
reads your data.
It introduces the concepts of records and fields, as well
as the getline
function.
I/O redirection is first described here.
Network I/O is also briefly introduced here.
awk
programs can produce output with
print
and printf
.
awk
and gawk
use.
awk
,
covers 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
gawk
provides arrays of arrays.
awk
and gawk
provide,
as well as how to define your own functions. It also discusses how
gawk
lets you call functions indirectly.
awk
and gawk
for problem solving.
There is lots of code here for you to read and learn from.
This part contains the following chapters:
awk
Functions, provides a number of functions meant to
be used from main awk
programs.
awk
Programs,
provides many sample awk
programs.
Reading these two chapters allows you to see awk
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 awk
programs.
gawk
,
describes special features for translating program
messages into different languages at runtime.
awk
Programs, describes the gawk
debugger.
gawk
, describes how gawk
allows 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 gawk
by writing extensions in C or C++.
gawk
source code and this Web page, respectively.
It contains the following appendices:
awk
Language,
describes how the awk
language has evolved since
its first release to the present. It also describes how gawk
has 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 gawk
and where to get other freely
available awk
implementations.
gawk
’s extensions, as
well as how to contribute new code to gawk
,
and some possible future directions for gawk
development.
gawk
source code
and this Web page, respectively.
All such differences
appear in the index under the
entry “differences in awk
and gawk
.”