"To boldly go where no man has gone before" is a
Registered Trademark of Paramount Pictures Corporation.
Copyright (C) 1989, 1991, 92, 93, 96, 97 Free Software Foundation, Inc.
URL: http://www.ssc.com/
@tab URL: http://www.fsf.org/
ISBN 1-57831-000-8
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
are preserved on all copies.
Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided that the entire
resulting derived work is distributed under the terms of a permission
notice identical to this one.
Permission is granted to copy and distribute translations of this manual
into another language, under the above conditions for modified versions,
except that this permission notice may be stated in a translation approved
by the Foundation.
Cover art by Amy Wells Wood.
To Miriam, for making me complete.
To Chana, for the joy you bring us.
To Rivka, for the exponential increase.
To Nachum, for the added dimension.
- Preface: What this book is about; brief
history and acknowledgements.
- What Is Awk: What is the
awk
language; using this
book.
- Getting Started: A basic introduction to using
awk
. How
to run an awk
program. Command line
syntax.
- One-liners: Short, sample
awk
programs.
- Regexp: All about matching things using regular
expressions.
- 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.
- Expressions: Expressions are the basic building blocks of
statements.
- Patterns and Actions: Overviews of patterns and actions.
- Statements: The various control statements are described
in detail.
- Built-in Variables: Built-in Variables
- 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.
- Invoking Gawk: How to run
gawk
.
- Library Functions: A Library of
awk
Functions.
- Sample Programs: Many
awk
programs with complete
explanations.
- Language History: The evolution of the
awk
language.
- Gawk Summary:
gawk
Options and Language Summary.
- Installation: Installing
gawk
under various operating
systems.
- Notes: Something about the implementation of
gawk
.
- Glossary: An explanation of some unfamiliar terms.
- Copying: Your right to copy and distribute
gawk
.
- Index: Concept and Variable Index.
- History: The history of
gawk
and awk
.
- Manual History: Brief history of the GNU project and this
book.
- Acknowledgements: Acknowledgements.
- This Manual: Using this book. Includes sample
input files that you can use.
- Conventions: Typographical Conventions.
- Sample Data Files: Sample data files for use in the
awk
programs illustrated in this book.
- Names: What name to use to find
awk
.
- Running gawk: How to run
gawk
programs; includes
command line syntax.
- One-shot: Running a short throw-away
awk
program.
- Read Terminal: Using no input files (input from terminal
instead).
- Long: Putting permanent
awk
programs in
files.
- Executable Scripts: Making self-contained
awk
programs.
- Comments: Adding documentation to
gawk
programs.
- Very Simple: A very simple example.
- Two Rules: A less simple one-line example with two rules.
- More Complex: A more complex example.
- Statements/Lines: Subdividing or combining statements into
lines.
- Other Features: Other Features of
awk
.
- When: When to use
gawk
and when to use other
things.
- Regexp Usage: How to Use Regular Expressions.
- Escape Sequences: How to write non-printing characters.
- Regexp Operators: Regular Expression Operators.
- GNU Regexp Operators: Operators specific to GNU software.
- Case-sensitivity: How to do case-insensitive matching.
- Leftmost Longest: How much text matches.
- Computed Regexps: Using Dynamic Regexps.
- Records: Controlling how data is split into records.
- Fields: An introduction to fields.
- Non-Constant Fields: Non-constant Field Numbers.
- Changing Fields: Changing the Contents of a Field.
- Field Separators: The field separator and how to change it.
- Basic Field Splitting: How fields are split with single characters or
simple strings.
- Regexp Field Splitting: Using regexps as the field separator.
- Single Character Fields: Making each character a separate field.
- Command Line Field Separator: Setting
FS
from the command line.
- Field Splitting Summary: Some final points and a summary table.
- Constant Size: Reading constant width data.
- Multiple Line: Reading multi-line records.
- Getline: Reading files under explicit program control
using the
getline
function.
- Getline Intro: Introduction to the
getline
function.
- Plain Getline: Using
getline
with no arguments.
- Getline/Variable: Using
getline
into a variable.
- Getline/File: Using
getline
from a file.
- Getline/Variable/File: Using
getline
into a variable from a
file.
- Getline/Pipe: Using
getline
from a pipe.
- Getline/Variable/Pipe: Using
getline
into a variable from a
pipe.
- Getline Summary: Summary Of
getline
Variants.
- Print: The
print
statement.
- Print Examples: Simple examples of
print
statements.
- Output Separators: The output separators and how to change them.
- OFMT: Controlling Numeric Output With
print
.
- Printf: The
printf
statement.
- Basic Printf: Syntax of the
printf
statement.
- Control Letters: Format-control letters.
- Format Modifiers: Format-specification modifiers.
- Printf Examples: Several examples.
- Redirection: How to redirect output to multiple files and
pipes.
- Special Files: File name interpretation in
gawk
.
gawk
allows access to inherited file
descriptors.
- Close Files And Pipes: Closing Input and Output Files and Pipes.
- Constants: String, numeric, and regexp constants.
- Scalar Constants: Numeric and string constants.
- Regexp Constants: Regular Expression constants.
- Using Constant Regexps: When and how to use a regexp constant.
- Variables: Variables give names to values for later use.
- Using Variables: Using variables in your programs.
- Assignment Options: Setting variables on the command line and a
summary of command line syntax. This is an
advanced method of input.
- Conversion: The conversion of strings to numbers and vice
versa.
- Arithmetic Ops: Arithmetic operations (`+', `-',
etc.)
- Concatenation: Concatenating strings.
- Assignment Ops: Changing the value of a variable or a field.
- Increment Ops: Incrementing the numeric value of a variable.
- Truth Values: What is "true" and what is "false".
- Typing and Comparison: How variables acquire types, and how this
affects comparison of numbers and strings with
`<', etc.
- Boolean Ops: Combining comparison expressions using boolean
operators `||' ("or"), `&&'
("and") and `!' ("not").
- Conditional Exp: Conditional expressions select between two
subexpressions under control of a third
subexpression.
- Function Calls: A function call is an expression.
- Precedence: How various operators nest.
- Pattern Overview: What goes into a pattern.
- Kinds of Patterns: A list of all kinds of patterns.
- Regexp Patterns: Using regexps as patterns.
- Expression Patterns: Any expression can be used as a pattern.
- Ranges: Pairs of patterns specify record ranges.
- BEGIN/END: Specifying initialization and cleanup rules.
- Using BEGIN/END: How and why to use BEGIN/END rules.
- I/O And BEGIN/END: I/O issues in BEGIN/END rules.
- Empty: The empty pattern, which matches every record.
- Action Overview: What goes into an action.
- If Statement: Conditionally execute some
awk
statements.
- While Statement: Loop until some condition is satisfied.
- Do Statement: Do specified action while looping until some
condition is satisfied.
- For Statement: Another looping statement, that provides
initialization and increment clauses.
- Break Statement: Immediately exit the innermost enclosing loop.
- Continue Statement: Skip to the end of the innermost enclosing
loop.
- Next Statement: Stop processing the current input record.
- Nextfile Statement: Stop processing the current file.
- Exit Statement: Stop execution of
awk
.
- User-modified: Built-in variables that you change to control
awk
.
- Auto-set: Built-in variables where
awk
gives you
information.
- ARGC and ARGV: Ways to use
ARGC
and ARGV
.
- Array Intro: Introduction to Arrays
- Reference to Elements: How to examine one element of an array.
- Assigning Elements: How to change an element of an array.
- Array Example: Basic Example of an Array
- Scanning an Array: A variation of the
for
statement. It
loops through the indices of an array's
existing elements.
- Delete: The
delete
statement removes an element
from an array.
- Numeric Array Subscripts: How to use numbers as subscripts in
awk
.
- Uninitialized Subscripts: Using Uninitialized variables as subscripts.
- Multi-dimensional: Emulating multi-dimensional arrays in
awk
.
- Multi-scanning: Scanning multi-dimensional arrays.
- Calling Built-in: How to call built-in functions.
- Numeric Functions: Functions that work with numbers, including
int
, sin
and rand
.
- String Functions: Functions for string manipulation, such as
split
, match
, and
sprintf
.
- I/O Functions: Functions for files and shell commands.
- Time Functions: Functions for dealing with time stamps.
- Definition Syntax: How to write definitions and what they mean.
- Function Example: An example function definition and what it
does.
- Function Caveats: Things to watch out for.
- Return Statement: Specifying the value a function returns.
- Options: Command line options and their meanings.
- Other Arguments: Input file names and variable assignments.
- AWKPATH Variable: Searching directories for
awk
programs.
- Obsolete: Obsolete Options and/or features.
- Undocumented: Undocumented Options and Features.
- Known Bugs: Known Bugs in
gawk
.
- Portability Notes: What to do if you don't have
gawk
.
- Nextfile Function: Two implementations of a
nextfile
function.
- Assert Function: A function for assertions in
awk
programs.
- Round Function: A function for rounding if
sprintf
does
not do it correctly.
- Ordinal Functions: Functions for using characters as numbers and
vice versa.
- Join Function: A function to join an array into a string.
- Mktime Function: A function to turn a date into a timestamp.
- Gettimeofday Function: A function to get formatted times.
- Filetrans Function: A function for handling data file transitions.
- Getopt Function: A function for processing command line
arguments.
- Passwd Functions: Functions for getting user information.
- Group Functions: Functions for getting group information.
- Library Names: How to best name private global variables in
library functions.
- Clones: Clones of common utilities.
- Cut Program: The
cut
utility.
- Egrep Program: The
egrep
utility.
- Id Program: The
id
utility.
- Split Program: The
split
utility.
- Tee Program: The
tee
utility.
- Uniq Program: The
uniq
utility.
- Wc Program: The
wc
utility.
- Miscellaneous Programs: Some interesting
awk
programs.
- Dupword Program: Finding duplicated words in a document.
- Alarm Program: An alarm clock.
- Translate Program: A program similar to the
tr
utility.
- Labels Program: Printing mailing labels.
- Word Sorting: A program to produce a word usage count.
- History Sorting: Eliminating duplicate entries from a history
file.
- Extract Program: Pulling out programs from Texinfo source
files.
- Simple Sed: A Simple Stream Editor.
- Igawk Program: A wrapper for
awk
that includes files.
- V7/SVR3.1: The major changes between V7 and System V
Release 3.1.
- SVR4: Minor changes between System V Releases 3.1
and 4.
- POSIX: New features from the POSIX standard.
- BTL: New features from the Bell Laboratories
version of
awk
.
- POSIX/GNU: The extensions in
gawk
not in POSIX
awk
.
- Command Line Summary: Recapitulation of the command line.
- Language Summary: A terse review of the language.
- Variables/Fields: Variables, fields, and arrays.
- Fields Summary: Input field splitting.
- Built-in Summary:
awk
's built-in variables.
- Arrays Summary: Using arrays.
- Data Type Summary: Values in
awk
are numbers or strings.
- Rules Summary: Patterns and Actions, and their component
parts.
- Pattern Summary: Quick overview of patterns.
- Regexp Summary: Quick overview of regular expressions.
- Actions Summary: Quick overview of actions.
- Operator Summary:
awk
operators.
- Control Flow Summary: The control statements.
- I/O Summary: The I/O statements.
- Printf Summary: A summary of
printf
.
- Special File Summary: Special file names interpreted internally.
- Built-in Functions Summary: Built-in numeric and string functions.
- Time Functions Summary: Built-in time functions.
- String Constants Summary: Escape sequences in strings.
- Functions Summary: Defining and calling functions.
- Historical Features: Some undocumented but supported "features".
- Gawk Distribution: What is in the
gawk
distribution.
- Getting: How to get the distribution.
- Extracting: How to extract the distribution.
- Distribution contents: What is in the distribution.
- Unix Installation: Installing
gawk
under various versions
of Unix.
- Quick Installation: Compiling
gawk
under Unix.
- Configuration Philosophy: How it's all supposed to work.
- VMS Installation: Installing
gawk
on VMS.
- VMS Compilation: How to compile
gawk
under VMS.
- VMS Installation Details: How to install
gawk
under VMS.
- VMS Running: How to run
gawk
under VMS.
- VMS POSIX: Alternate instructions for VMS POSIX.
- PC Installation: Installing and Compiling
gawk
on MS-DOS
and OS/2
- Atari Installation: Installing
gawk
on the Atari ST.
- Atari Compiling: Compiling
gawk
on Atari
- Atari Using: Running
gawk
on Atari
- Amiga Installation: Installing
gawk
on an Amiga.
- Bugs: Reporting Problems and Bugs.
- Other Versions: Other freely available
awk
implementations.
- Compatibility Mode: How to disable certain
gawk
extensions.
- Additions: Making Additions To
gawk
.
- Adding Code: Adding code to the main body of
gawk
.
- New Ports: Porting
gawk
to a new operating system.
- Future Extensions: New features that may be implemented one day.
- Improvements: Suggestions for improvements by volunteers.
This book teaches you about the awk
language and
how you can use it effectively. You should already be familiar with basic
system commands, such as cat
and ls
,(1) and basic shell
facilities, such as Input/Output (I/O) redirection and pipes.
Implementations of the awk
language are available for many different
computing environments. This book, while describing the awk
language
in general, also describes a particular implementation of awk
called
gawk
(which stands for "GNU Awk"). gawk
runs on a broad range
of Unix systems, ranging from 80386 PC-based computers, up through large scale
systems, such as Crays. gawk
has also been ported to MS-DOS and
OS/2 PC's, Atari and Amiga micro-computers, and VMS.
Go to the first, previous, next, last section, table of contents.