Info Node: (gawk.info)Top

gawk.info: Top
(dir)
Foreword
Back to Software Index
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 (C) 1989, 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2000,
2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010, 2011, 2012, 2013 Free
Software Foundation, Inc.
This is Edition 4.1 of `GAWK: Effective AWK Programming: A User's
Guide for GNU Awk', for the 4.1.0 (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.3 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. "A GNU Manual"
b. "You have the freedom to copy and modify this GNU manual. Buying
copies from the FSF supports it in developing GNU and promoting
software freedom."
Foreword- Some nice words about this
Info file.
Preface- What this Info file is about; brief
history and acknowledgments.
Getting Started- A basic introduction to using
`awk'. How to run an `awk'
program. Command-line syntax.
Invoking Gawk- How to run `gawk'.
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.
Library Functions- A Library of `awk' Functions.
Sample Programs- Many `awk' programs with complete
explanations.
Advanced Features- Stuff for advanced users, specific to
`gawk'.
Internationalization- Getting `gawk' to speak your
language.
Debugger- The `gawk' debugger.
Arbitrary Precision Arithmetic- Arbitrary precision arithmetic with
`gawk'.
Dynamic Extensions- Adding new built-in functions to
`gawk'.
Language History- The evolution of the `awk'
language.
Installation- Installing `gawk' under various
operating systems.
Notes- Notes about adding things to `gawk'
and possible future work.
Basic Concepts- A very quick introduction 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 Info file.
Index- Concept and Variable Index.
History- The history of `gawk' and
`awk'.
Names- What name to use to find
`awk'.
This Manual- Using this Info file. Includes
sample input files that you can use.
Conventions- Typographical Conventions.
Manual History- Brief history of the GNU project and
this Info file.
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.
DOS Quoting- Quoting in Windows Batch Files.
Sample Data Files- Sample data files for use in the
`awk' programs illustrated in
this Info file.
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.
Command Line- How to run `awk'.
Options- Command-line options and their
meanings.
Other Arguments- Input file names and variable
assignments.
Naming Standard Input- How to specify standard input with
other files.
Environment Variables- The environment variables
`gawk' uses.
AWKPATH Variable- Searching directories for
`awk' programs.
AWKLIBPATH Variable- Searching directories for
`awk' shared libraries.
Other Environment Variables- The environment variables.
Exit Status- `gawk''s exit status.
Include Files- Including other files into your
program.
Loading Shared Libraries- Loading shared libraries into your
program.
Obsolete- Obsolete Options and/or features.
Undocumented- Undocumented Options and Features.
Regexp Usage- How to Use Regular Expressions.
Escape Sequences- How to write nonprinting characters.
Regexp Operators- Regular Expression Operators.
Bracket Expressions- 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.
Default Field Splitting- How fields are normally separated.
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.
Splitting By Content- Defining Fields By Content
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.
Read Timeout- Reading input with a timeout.
Command line directories- What happens if you put a directory on
the command line.
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 Network- Special files for network
communications.
Special Caveats- Things to watch out for.
Close Files And Pipes- Closing Input and Output Files and
Pipes.
Values- Constants, Variables, and Regular
Expressions.
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.
All Operators- `gawk''s operators.
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 and Conditions- Testing for true and false.
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.
Variable Typing- String type versus numeric type.
Comparison Operators- The comparison operators.
POSIX String Comparison- String comparison with POSIX rules.
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.
Locales- How the locale affects things.
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.
BEGINFILE/ENDFILE- Two special patterns for advanced
control.
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.
Switch Statement- Switch/case evaluation for conditional
execution of statements based on a
value.
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 Basics- The basics of arrays.
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.
Controlling Scanning- Controlling the order in which arrays
are scanned.
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.
Arrays of Arrays- True multidimensional arrays.
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.
Type Functions- Functions for type information.
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.
Calling A Function- Don't use spaces.
Variable Scope- Controlling variable scope.
Pass By Value/Reference- Passing parameters.
Return Statement- Specifying the value a function
returns.
Dynamic Typing- How variable types can change at
runtime.
Indirect Calls- Choosing the function to call at
runtime.
Library Names- How to best name private global
variables in library functions.
General Functions- Functions that are of general use.
Strtonum Function- A replacement for the built-in
`strtonum()' 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.
Getlocaltime 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.
Empty Files- Checking for zero-length files.
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.
Walking Arrays- A function to walk arrays of arrays.
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.
Anagram Program- Finding anagrams from a dictionary.
Signature Program- People do amazing things with too much
time on their hands.
Nondecimal Data- Allowing nondecimal input data.
Array Sorting- Facilities for controlling array
traversal and sorting arrays.
Controlling Array Traversal- How to use PROCINFO["sorted_in"].
Array Sorting Functions- How to use `asort()' and
`asorti()'.
Two-way I/O- Two-way communications with another
process.
TCP/IP Networking- Using `gawk' for network
programming.
Profiling- Profiling your `awk' programs.
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.
Debugging- Introduction to `gawk'
debugger.
Debugging Concepts- Debugging in General.
Debugging Terms- Additional Debugging Concepts.
Awk Debugging- Awk Debugging.
Sample Debugging Session- Sample debugging session.
Debugger Invocation- How to Start the Debugger.
Finding The Bug- Finding the Bug.
List of Debugger Commands- Main debugger commands.
Breakpoint Control- Control of Breakpoints.
Debugger Execution Control- Control of Execution.
Viewing And Changing Data- Viewing and Changing Data.
Execution Stack- Dealing with the Stack.
Debugger Info- Obtaining Information about the
Program and the Debugger State.
Miscellaneous Debugger Commands- Miscellaneous Commands.
Readline Support- Readline support.
Limitations- Limitations and future plans.
General Arithmetic- An introduction to computer
arithmetic.
Floating Point Issues- Stuff to know about floating-point
numbers.
String Conversion Precision- The String Value Can Lie.
Unexpected Results- Floating Point Numbers Are Not
Abstract Numbers.
POSIX Floating Point Problems- Standards Versus Existing Practice.
Integer Programming- Effective integer programming.
Floating-point Programming- Effective Floating-point Programming.
Floating-point Representation- Binary floating-point representation.
Floating-point Context- Floating-point context.
Rounding Mode- Floating-point rounding mode.
Gawk and MPFR- How `gawk' provides
arbitrary-precision arithmetic.
Arbitrary Precision Floats- Arbitrary Precision Floating-point
Arithmetic with `gawk'.
Setting Precision- Setting the working precision.
Setting Rounding Mode- Setting the rounding mode.
Floating-point Constants- Representing floating-point constants.
Changing Precision- Changing the precision of a number.
Exact Arithmetic- Exact arithmetic with floating-point
numbers.
Arbitrary Precision Integers- Arbitrary Precision Integer Arithmetic
with `gawk'.
Extension Intro- What is an extension.
Plugin License- A note about licensing.
Extension Mechanism Outline- An outline of how it works.
Extension API Description- A full description of the API.
Extension API Functions Introduction- Introduction to the API functions.
General Data Types- The data types.
Requesting Values- How to get a value.
Constructor Functions- Functions for creating values.
Registration Functions- Functions to register things with
`gawk'.
Extension Functions- Registering extension functions.
Exit Callback Functions- Registering an exit callback.
Extension Version String- Registering a version string.
Input Parsers- Registering an input parser.
Output Wrappers- Registering an output wrapper.
Two-way processors- Registering a two-way processor.
Printing Messages- Functions for printing messages.
Updating `ERRNO'- Functions for updating `ERRNO'.
Accessing Parameters- Functions for accessing parameters.
Symbol Table Access- Functions for accessing global
variables.
Symbol table by name- Accessing variables by name.
Symbol table by cookie- Accessing variables by ``cookie''.
Cached values- Creating and using cached values.
Array Manipulation- Functions for working with arrays.
Array Data Types- Data types for working with arrays.
Array Functions- Functions for working with arrays.
Flattening Arrays- How to flatten arrays.
Creating Arrays- How to create and populate arrays.
Extension API Variables- Variables provided by the API.
Extension Versioning- API Version information.
Extension API Informational Variables- Variables providing information about
`gawk''s invocation.
Extension API Boilerplate- Boilerplate code for using the API.
Finding Extensions- How `gawk' finds compiled
extensions.
Extension Example- Example C code for an extension.
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.
Extension Samples- The sample extensions that ship with
`gawk'.
Extension Sample File Functions- The file functions sample.
Extension Sample Fnmatch- An interface to `fnmatch()'.
Extension Sample Fork- An interface to `fork()' and
other process functions.
Extension Sample Inplace- Enabling in-place file editing.
Extension Sample Ord- Character to value to character
conversions.
Extension Sample Readdir- An interface to `readdir()'.
Extension Sample Revout- Reversing output sample output
wrapper.
Extension Sample Rev2way- Reversing data sample two-way
processor.
Extension Sample Read write array- Serializing an array to a file.
Extension Sample Readfile- Reading an entire file into a string.
Extension Sample API Tests- Tests for the API.
Extension Sample Time- An interface to `gettimeofday()'
and `sleep()'.
gawkextlib- The `gawkextlib' project.
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 Brian Kernighan's
version of `awk'.
POSIX/GNU- The extensions in `gawk' not
in POSIX `awk'.
Common Extensions- Common Extensions Summary.
Ranges and Locales- How locales used to affect regexp
ranges.
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.
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,
Windows32, and OS/2.
PC Testing- Testing `gawk' on PC systems.
PC Using- Running `gawk' on MS-DOS,
Windows32 and OS/2.
Cygwin- Building and running `gawk'
for Cygwin.
MSYS- Using `gawk' In The MSYS
Environment.
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 Old Gawk- An old version comes with some VMS
systems.
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'.
Accessing The Source- Accessing the Git repository.
Adding Code- Adding code to the main body of
`gawk'.
New Ports- Porting `gawk' to a new
operating system.
Derived Files- Why derived files are kept in the
`git' repository.
Future Extensions- New features that may be implemented
one day.
Implementation Limitations- Some limitations of the
implementation.
Extension Design- Design notes about the extension API.
Old Extension Problems- Problems with the old mechanism.
Extension New Mechanism Goals- Goals for the new mechanism.
Extension Other Design Decisions- Some other design decisions.
Extension Future Growth- Some room for future growth.
Old Extension Mechanism- Some compatibility for old extensions.
Basic High Level- The high level view.
Basic Data Typing- A very quick intro to data types.
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.
To Malka, for the new beginning.
automatically generated by info2www version 1.2