The GNU Awk User's Guide
Node:Top,
Next:Foreword,
Previous:(dir),
Up:(dir)
General Introduction
This file documents awk, a program that you can use to select
particular records in a file and perform operations upon them.
Copyright © 1989, 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
This is Edition 3 of GAWK: Effective AWK Programming: A User's Guide for GNU Awk,
for the 3.1.1 (or later) version of the GNU
implementation of AWK.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
any later version published by the Free Software Foundation; with the
Invariant Sections being "GNU General Public License", the Front-Cover
texts being (a) (see below), and with the Back-Cover Texts being (b)
(see below).  A copy of the license is included in the section entitled
"GNU Free Documentation License".
- "A GNU Manual"
 - "You have freedom to copy and modify this GNU Manual, like GNU
software.  Copies published by the Free Software Foundation raise
funds for GNU development."
 
- Foreword:                        Some nice words about this
                                   Web page. 
 - Preface:                         What this Web page is about; brief
                                   history and acknowledgments. 
 - Getting Started:                 A basic introduction to using
                                   
awk. How to run an awk
                                   program. Command-line syntax. 
 - 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. 
 - Arrays:                          The description and use of arrays. Also
                                   includes array-oriented control statements. 
 - Functions:                       Built-in and user-defined functions. 
 - Internationalization:            Getting 
gawk to speak your
                                   language. 
 - Advanced Features:               Stuff for advanced users, specific to
                                   
gawk. 
 - 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. 
 - Installation:                    Installing 
gawk under various
                                   operating systems. 
 - Notes:                           Notes about 
gawk extensions and
                                   possible future work. 
 - Basic Concepts:                  A very quick intoduction to programming
                                   concepts. 
 - Glossary:                        An explanation of some unfamiliar terms. 
 - Copying:                         Your right to copy and distribute
                                   
gawk. 
 - GNU Free Documentation License:  The license for this Web page. 
 - Index:                           Concept and Variable Index.
 - History:                         The history of 
gawk and
                                   awk. 
 - Names:                           What name to use to find 
awk. 
 - This Manual:                     Using this Web page. Includes
                                   sample input files that you can use. 
 - Conventions:                     Typographical Conventions. 
 - Manual History:                  Brief history of the GNU project and this
                                   Web page. 
 - How To Contribute:               Helping to save the world. 
 - Acknowledgments:                 Acknowledgments. 
 - Running gawk:                    How to run 
gawk programs;
                                   includes command-line syntax. 
 - One-shot:                        Running a short throwaway 
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. 
 - Quoting:                         More discussion of shell quoting issues. 
 - Sample Data Files:               Sample data files for use in the
                                   
awk programs illustrated in this
                                   Web page. 
 - Very Simple:                     A very simple example. 
 - Two Rules:                       A less simple one-line example using 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 nonprinting characters. 
 - Regexp Operators:                Regular Expression Operators. 
 - Character Lists:                 What can go between 
[...]. 
 - 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. 
 - Nonconstant Fields:              Nonconstant Field Numbers. 
 - Changing Fields:                 Changing the Contents of a Field. 
 - Field Separators:                The field separator and how to change it. 
 - 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. 
 - 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/Coprocess:               Using 
getline from a coprocess. 
 - Getline/Variable/Coprocess:      Using 
getline into a variable from a
                                   coprocess. 
 - Getline Notes:                   Important things to know about
                                   
getline. 
 - 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. 
 - Special FD:                      Special files for I/O. 
 - Special Process:                 Special files for process information. 
 - Special Network:                 Special files for network communications. 
 - Special Caveats:                 Things to watch out for. 
 - Close Files And Pipes:           Closing Input and Output Files and Pipes. 
 - Constants:                       String, numeric and regexp constants. 
 - Scalar Constants:                Numeric and string constants. 
 - Nondecimal-numbers:              What are octal and hex numbers. 
 - 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. 
 - 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. 
 - Using Shell Variables:           How to use shell variables with
                                   
awk. 
 - Action Overview:                 What goes into an action. 
 - Statements:                      Describes the various control statements in
                                   detail. 
 - 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. 
 - Built-in Variables:              Summarizes the built-in variables. 
 - 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 multidimensional arrays in
                                   
awk. 
 - Multi-scanning:                  Scanning multidimensional arrays. 
 - Array Sorting:                   Sorting array values and indices. 
 - Built-in:                        Summarizes the built-in functions. 
 - 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. 
 - Gory Details:                    More than you want to know about 
\
                                   and & with sub, gsub,
                                   and gensub. 
 - I/O Functions:                   Functions for files and shell commands. 
 - Time Functions:                  Functions for dealing with timestamps. 
 - Bitwise Functions:               Functions for bitwise operations. 
 - I18N Functions:                  Functions for string translation. 
 - User-defined:                    Describes User-defined functions in detail. 
 - 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. 
 - Dynamic Typing:                  How variable types can change at runtime. 
 - I18N and L10N:                   Internationalization and Localization. 
 - Explaining gettext:              How GNU 
gettext works. 
 - Programmer i18n:                 Features for the programmer. 
 - Translator i18n:                 Features for the translator. 
 - String Extraction:               Extracting marked strings. 
 - Printf Ordering:                 Rearranging 
printf arguments. 
 - I18N Portability:                
awk-level portability issues. 
 - I18N Example:                    A simple i18n example. 
 - Gawk I18N:                       
gawk is also internationalized. 
 - Nondecimal Data:                 Allowing nondecimal input data. 
 - Two-way I/O:                     Two-way communications with another
                                   process. 
 - TCP/IP Networking:               Using 
gawk for network
                                   programming. 
 - Portal Files:                    Using 
gawk with BSD portals. 
 - Profiling:                       Profiling your 
awk programs. 
 - Command Line:                    How to run 
awk. 
 - 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. 
 - Library Names:                   How to best name private global variables
                                   in library functions. 
 - General Functions:               Functions that are of general use. 
 - 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. 
 - Cliff Random Function:           The Cliff Random Number Generator. 
 - Ordinal Functions:               Functions for using characters as numbers
                                   and vice versa. 
 - Join Function:                   A function to join an array into a string. 
 - Gettimeofday Function:           A function to get formatted times. 
 - Data File Management:            Functions for managing command-line data
                                   files. 
 - Filetrans Function:              A function for handling data file
                                   transitions. 
 - Rewind Function:                 A function for rereading the current file. 
 - File Checking:                   Checking that data files are readable. 
 - Ignoring Assigns:                Treating assignments as file names. 
 - Getopt Function:                 A function for processing command-line
                                   arguments. 
 - Passwd Functions:                Functions for getting user information. 
 - Group Functions:                 Functions for getting group information. 
 - Running Examples:                How to run these examples. 
 - 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. 
 - Contributors:                    The major contributors to 
gawk. 
 - 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. 
 - Additional Configuration Options:  Other compile-time options. 
 - Configuration Philosophy:        How it's all supposed to work. 
 - Non-Unix Installation:           Installation on Other Operating Systems. 
 - Amiga Installation:              Installing 
gawk on an Amiga. 
 - BeOS Installation:               Installing 
gawk on BeOS. 
 - PC Installation:                 Installing and Compiling 
gawk on
                                   MS-DOS and OS/2. 
 - PC Binary Installation:          Installing a prepared distribution. 
 - PC Compiling:                    Compiling 
gawk for MS-DOS, Win32,
                                   and OS/2. 
 - PC Using:                        Running 
gawk on MS-DOS, Win32 and
                                   OS/2. 
 - Cygwin:                          Building and running 
gawk for
                                   Cygwin. 
 - 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. 
 - Unsupported:                     Systems whose ports are no longer
                                   supported. 
 - Atari Installation:              Installing 
gawk on the Atari ST. 
 - Atari Compiling:                 Compiling 
gawk on Atari. 
 - Atari Using:                     Running 
gawk on Atari. 
 - Tandem Installation:             Installing 
gawk on a Tandem. 
 - 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. 
 - Dynamic Extensions:              Adding new built-in functions to
                                   
gawk. 
 - Internals:                       A brief look at some 
gawk
                                   internals. 
 - Sample Library:                  A example of new functions. 
 - Internal File Description:       What the new functions will do. 
 - Internal File Ops:               The code for internal file operations. 
 - Using Internal File Ops:         How to use an external extension. 
 - Future Extensions:               New features that may be implemented one
                                   day. 
 - Basic High Level:                The high level view. 
 - Basic Data Typing:               A very quick intro to data types. 
 - Floating Point Issues:           Stuff to know about floating-point numbers. 
 
Short Contents
Table of Contents