Top (The GNU Awk User’s Guide)
The GNU Awk User’s Guide
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–2005, 2007, 2009–2020
Free Software Foundation, Inc.
This is Edition 5.1 of GAWK: Effective AWK Programming: A User’s Guide for GNU Awk, for the 5.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”, with the Front-Cover Texts being “A GNU Manual”, and with the Back-Cover Texts as in (a) below. A copy of the license is included in the section entitled “GNU Free Documentation License”.
- The FSF’s Back-Cover Text is: “You have the freedom to copy and modify this GNU manual.”
• Foreword3 | Some nice words about this Web page. | ||
• Foreword4 | More nice words. | ||
• 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.
| ||
• 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.
| ||
• Namespaces | How namespaces work in gawk .
| ||
• 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 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 the keyboard 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 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.
| ||
• Intro Summary | Summary of the introduction. | ||
• 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. | ||
• Invoking Summary | Invocation summary. | ||
• Regexp Usage | How to Use Regular Expressions. | ||
• Escape Sequences | How to write nonprinting characters. | ||
• Regexp Operators | Regular Expression Operators. | ||
• Regexp Operator Details | The actual details. | ||
• Interval Expressions | Notes on interval expressions. | ||
• Bracket Expressions | What can go between ‘[...] ’.
| ||
• Leftmost Longest | How much text matches. | ||
• Computed Regexps | Using Dynamic Regexps. | ||
• GNU Regexp Operators | Operators specific to GNU software. | ||
• Case-sensitivity | How to do case-insensitive matching. | ||
• Regexp Summary | Regular expressions summary. | ||
• Records | Controlling how data is split into records. | ||
• awk split records | How standard awk splits records.
| ||
• gawk split records | How gawk splits 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.
| ||
• Full Line Fields | Making the full line be a single field. | ||
• Field Splitting Summary | Some final points and a summary table. | ||
• Constant Size | Reading constant width data. | ||
• Fixed width data | Processing fixed-width data. | ||
• Skipping intervening | Skipping intervening fields. | ||
• Allowing trailing data | Capturing optional trailing data. | ||
• Fields with fixed data | Field values with fixed-width data. | ||
• Splitting By Content | Defining Fields By Content | ||
• More CSV | More on CSV files. | ||
• Testing field creation | Checking how gawk is splitting records.
| ||
• Multiple Line | Reading multiline 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. | ||
• Retrying Input | Retrying input after certain errors. | ||
• Command-line directories | What happens if you put a directory on the command line. | ||
• Input Summary | Input summary. | ||
• Input Exercises | Exercises. | ||
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 FD | Special files for I/O. | ||
• Special Files | File name interpretation in gawk . gawk allows access to inherited file descriptors.
| ||
• Other Inherited Files | Accessing other open files with gawk .
| ||
• 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. | ||
• Nonfatal | Enabling Nonfatal Output. | ||
• Output Summary | Output summary. | ||
• Output Exercises | Exercises. | ||
• 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. | ||
• Standard Regexp Constants | Regexp constants in standard awk .
| ||
• Strong Regexp Constants | Strongly typed regexp constants. | ||
• 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. | ||
• Strings And Numbers | How awk Converts Between Strings And Numbers.
| ||
• Locale influences conversions | How the locale may affect conversions. | ||
• 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. | ||
• Expressions Summary | Expressions summary. | ||
• 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 predefined 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 .
| ||
• Pattern Action Summary | Patterns and Actions summary. | ||
• 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. | ||
• Numeric Array Subscripts | How to use numbers as subscripts in awk .
| ||
• Uninitialized Subscripts | Using Uninitialized variables as subscripts. | ||
• Delete | The delete statement removes an element from an array.
| ||
• Multidimensional | Emulating multidimensional arrays in awk .
| ||
• Multiscanning | Scanning multidimensional arrays. | ||
• Arrays of Arrays | True multidimensional arrays. | ||
• Arrays Summary | Summary of 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 Calling | Calling user-defined functions. | ||
• Calling A Function | Don’t use spaces. | ||
• Variable Scope | Controlling variable scope. | ||
• Pass By Value/Reference | Passing parameters. | ||
• Function Caveats | Other points to know about functions. | ||
• 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. | ||
• Functions Summary | Summary of functions. | ||
• 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. | ||
• Readfile Function | A function to read an entire file at once. | ||
• Shell Quoting | A function to quote strings for the shell. | ||
• 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. | ||
• Library Functions Summary | Summary of library functions. | ||
• Library Exercises | Exercises. | ||
• 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. | ||
• Programs Summary | Summary of programs. | ||
• Programs Exercises | Exercises. | ||
• 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.
| ||
• Advanced Features Summary | Summary of advanced features. | ||
• 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.
| ||
• I18N Summary | Summary of I18N stuff. | ||
• 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. | ||
• Debugging Summary | Debugging summary. | ||
• Global Namespace | The global namespace in standard awk .
| ||
• Qualified Names | How to qualify names with a namespace. | ||
• Default Namespace | The default namespace. | ||
• Changing The Namespace | How to change the namespace. | ||
• Naming Rules | Namespace and Component Naming Rules. | ||
• Internal Name Management | How names are stored internally. | ||
• Namespace Example | An example of code using a namespace. | ||
• Namespace And Features | Namespaces and other gawk features.
| ||
• Namespace Summary | Summarizing namespaces. | ||
• Computer Arithmetic | A quick intro to computer math. | ||
• Math Definitions | Defining terms used. | ||
• MPFR features | The MPFR features in gawk .
| ||
• FP Math Caution | Things to know. | ||
• Inexactness of computations | Floating point math is not exact. | ||
• Inexact representation | Numbers are not exactly represented. | ||
• Comparing FP Values | How to compare floating point values. | ||
• Errors accumulate | Errors get bigger as they go. | ||
• Getting Accuracy | Getting more accuracy takes some work. | ||
• Try To Round | Add digits and round. | ||
• Setting precision | How to set the precision. | ||
• Setting the rounding mode | How to set the rounding mode. | ||
• Arbitrary Precision Integers | Arbitrary Precision Integer Arithmetic with gawk .
| ||
• Checking for MPFR | How to check if MPFR is available. | ||
• POSIX Floating Point Problems | Standards Versus Existing Practice. | ||
• Floating point summary | Summary of floating point discussion. | ||
• 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. | ||
• Memory Allocation Functions | Functions for allocating memory. | ||
• 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 .
| ||
• Requesting Values | How to get a value. | ||
• 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. | ||
• Redirection API | How to access and manipulate redirections. | ||
• Extension API Variables | Variables provided by the API. | ||
• Extension Versioning | API Version information. | ||
• Extension GMP/MPFR Versioning | Version information about GMP and MPFR. | ||
• Extension API Informational Variables | Variables providing information about gawk ’s invocation.
| ||
• Extension API Boilerplate | Boilerplate code for using the API. | ||
• Changes from API V1 | Changes from V1 of 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 Time | An interface to gettimeofday() and sleep() .
| ||
• Extension Sample API Tests | Tests for the API. | ||
• gawkextlib | The gawkextlib project.
| ||
• Extension summary | Extension summary. | ||
• Extension Exercises | Exercises. | ||
• 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 .
| ||
• Feature History | The history of the features in gawk .
| ||
• Common Extensions | Common Extensions Summary. | ||
• Ranges and Locales | How locales used to affect regexp ranges. | ||
• Contributors | The major contributors to gawk .
| ||
• History summary | History summary. | ||
• 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.
| ||
• Shell Startup Files | Shell convenience functions. | ||
• 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 Microsoft Windows.
| ||
• PC Binary Installation | Installing a prepared distribution. | ||
• PC Compiling | Compiling gawk for Windows32.
| ||
• PC Using | Running gawk on Windows32.
| ||
• 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 Dynamic Extensions | Compiling gawk dynamic extensions on VMS.
| ||
• VMS Installation Details | How to install gawk under VMS.
| ||
• VMS Running | How to run gawk under VMS.
| ||
• VMS GNV | The VMS GNV Project. | ||
• VMS Old Gawk | An old version comes with some VMS systems. | ||
• Bugs | Reporting Problems and Bugs. | ||
• Bug address | Where to send reports to. | ||
• Usenet | Where not to send reports to. | ||
• Maintainers | Maintainers of non-*nix ports. | ||
• Other Versions | Other freely available awk implementations.
| ||
• Installation summary | Summary of installation. | ||
• 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. | ||
• Notes summary | Summary of implementation notes. | ||
• Basic High Level | The high level view. | ||
• Basic Data Typing | A very quick intro to data types. |
Short Table of Contents
Table of Contents
- ** Foreword to the Third Edition
- Part I:
Theawk
Language- 1 Getting Started with
awk
- 2 Running
awk
andgawk
- 2.1 Invoking
awk
- 2.2 Command-Line Options
- 2.3 Other Command-Line Arguments
- 2.4 Naming Standard Input
- 2.5 The Environment Variables
gawk
Uses - 2.6
gawk
’s Exit Status - 2.7 Including Other Files into Your Program
- 2.8 Loading Dynamic Extensions into Your Program
- 2.9 Obsolete Options and/or Features
- 2.10 Undocumented Options and Features
- 2.11 Summary
- 2.1 Invoking
- 3 Regular Expressions
- 4 Reading Input Files
- 4.1 How Input Is Split into Records
- 4.2 Examining Fields
- 4.3 Nonconstant Field Numbers
- 4.4 Changing the Contents of a Field
- 4.5 Specifying How Fields Are Separated
- 4.6 Reading Fixed-Width Data
- 4.7 Defining Fields by Content
- 4.8 Checking How
gawk
Is Splitting Records - 4.9 Multiple-Line Records
- 4.10 Explicit Input with
getline
- 4.10.1 Using
getline
with No Arguments - 4.10.2 Using
getline
into a Variable - 4.10.3 Using
getline
from a File - 4.10.4 Using
getline
into a Variable from a File - 4.10.5 Using
getline
from a Pipe - 4.10.6 Using
getline
into a Variable from a Pipe - 4.10.7 Using
getline
from a Coprocess - 4.10.8 Using
getline
into a Variable from a Coprocess - 4.10.9 Points to Remember About
getline
- 4.10.10 Summary of
getline
Variants
- 4.10.1 Using
- 4.11 Reading Input with a Timeout
- 4.12 Retrying Reads After Certain Input Errors
- 4.13 Directories on the Command Line
- 4.14 Summary
- 4.15 Exercises
- 5 Printing Output
- 5.1 The
print
Statement - 5.2
print
Statement Examples - 5.3 Output Separators
- 5.4 Controlling Numeric Output with
print
- 5.5 Using
printf
Statements for Fancier Printing - 5.6 Redirecting Output of
print
andprintf
- 5.7 Special Files for Standard Preopened Data Streams
- 5.8 Special File names in
gawk
- 5.9 Closing Input and Output Redirections
- 5.10 Enabling Nonfatal Output
- 5.11 Summary
- 5.12 Exercises
- 5.1 The
- 6 Expressions
- 6.1 Constants, Variables, and Conversions
- 6.2 Operators: Doing Something with Values
- 6.3 Truth Values and Conditions
- 6.4 Function Calls
- 6.5 Operator Precedence (How Operators Nest)
- 6.6 Where You Are Makes a Difference
- 6.7 Summary
- 7 Patterns, Actions, and Variables
- 7.1 Pattern Elements
- 7.2 Using Shell Variables in Programs
- 7.3 Actions
- 7.4 Control Statements in Actions
- 7.5 Predefined Variables
- 7.6 Summary
- 8 Arrays in
awk
- 9 Functions
- 9.1 Built-in Functions
- 9.2 User-Defined Functions
- 9.3 Indirect Function Calls
- 9.4 Summary
- 1 Getting Started with
- Part II:
Problem Solving withawk
- 10 A Library of
awk
Functions- 10.1 Naming Library Function Global Variables
- 10.2 General Programming
- 10.2.1 Converting Strings to Numbers
- 10.2.2 Assertions
- 10.2.3 Rounding Numbers
- 10.2.4 The Cliff Random Number Generator
- 10.2.5 Translating Between Characters and Numbers
- 10.2.6 Merging an Array into a String
- 10.2.7 Managing the Time of Day
- 10.2.8 Reading a Whole File at Once
- 10.2.9 Quoting Strings to Pass to the Shell
- 10.3 Data file Management
- 10.4 Processing Command-Line Options
- 10.5 Reading the User Database
- 10.6 Reading the Group Database
- 10.7 Traversing Arrays of Arrays
- 10.8 Summary
- 10.9 Exercises
- 11 Practical
awk
Programs- 11.1 Running the Example Programs
- 11.2 Reinventing Wheels for Fun and Profit
- 11.3 A Grab Bag of
awk
Programs- 11.3.1 Finding Duplicated Words in a Document
- 11.3.2 An Alarm Clock Program
- 11.3.3 Transliterating Characters
- 11.3.4 Printing Mailing Labels
- 11.3.5 Generating Word-Usage Counts
- 11.3.6 Removing Duplicates from Unsorted Text
- 11.3.7 Extracting Programs from Texinfo Source Files
- 11.3.8 A Simple Stream Editor
- 11.3.9 An Easy Way to Use Library Functions
- 11.3.10 Finding Anagrams from a Dictionary
- 11.3.11 And Now for Something Completely Different
- 11.4 Summary
- 11.5 Exercises
- 10 A Library of
- Part III:
Moving Beyond Standardawk
withgawk
- 12 Advanced Features of
gawk
- 13 Internationalization with
gawk
- 14 Debugging
awk
Programs - 15 Namespaces in
gawk
- 16 Arithmetic and Arbitrary-Precision Arithmetic with
gawk
- 16.1 A General Description of Computer Arithmetic
- 16.2 Other Stuff to Know
- 16.3 Arbitrary-Precision Arithmetic Features in
gawk
- 16.4 Floating-Point Arithmetic: Caveat Emptor!
- 16.5 Arbitrary-Precision Integer Arithmetic with
gawk
- 16.6 How To Check If MPFR Is Available
- 16.7 Standards Versus Existing Practice
- 16.8 Summary
- 17 Writing Extensions for
gawk
- 17.1 Introduction
- 17.2 Extension Licensing
- 17.3 How It Works at a High Level
- 17.4 API Description
- 17.4.1 Introduction
- 17.4.2 General-Purpose Data Types
- 17.4.3 Memory Allocation Functions and Convenience Macros
- 17.4.4 Constructor Functions
- 17.4.5 Registration Functions
- 17.4.6 Printing Messages
- 17.4.7 Updating
ERRNO
- 17.4.8 Requesting Values
- 17.4.9 Accessing and Updating Parameters
- 17.4.10 Symbol Table Access
- 17.4.11 Array Manipulation
- 17.4.12 Accessing and Manipulating Redirections
- 17.4.13 API Variables
- 17.4.14 Boilerplate Code
- 17.4.15 Changes From Version 1 of the API
- 17.5 How
gawk
Finds Extensions - 17.6 Example: Some File Functions
- 17.7 The Sample Extensions in the
gawk
Distribution- 17.7.1 File-Related Functions
- 17.7.2 Interface to
fnmatch()
- 17.7.3 Interface to
fork()
,wait()
, andwaitpid()
- 17.7.4 Enabling In-Place File Editing
- 17.7.5 Character and Numeric values:
ord()
andchr()
- 17.7.6 Reading Directories
- 17.7.7 Reversing Output
- 17.7.8 Two-Way I/O Example
- 17.7.9 Dumping and Restoring an Array
- 17.7.10 Reading an Entire File
- 17.7.11 Extension Time Functions
- 17.7.12 API Tests
- 17.8 The
gawkextlib
Project - 17.9 Summary
- 17.10 Exercises
- 12 Advanced Features of
- Part IV:
Appendices- Appendix A The Evolution of the
awk
Language- A.1 Major Changes Between V7 and SVR3.1
- A.2 Changes Between SVR3.1 and SVR4
- A.3 Changes Between SVR4 and POSIX
awk
- A.4 Extensions in Brian Kernighan’s
awk
- A.5 Extensions in
gawk
Not in POSIXawk
- A.6 History of
gawk
Features - A.7 Common Extensions Summary
- A.8 Regexp Ranges and Locales: A Long Sad Story
- A.9 Major Contributors to
gawk
- A.10 Summary
- Appendix B Installing
gawk
- B.1 The
gawk
Distribution - B.2 Compiling and Installing
gawk
on Unix-Like Systems - B.3 Installation on Other Operating Systems
- B.4 Reporting Problems and Bugs
- B.5 Other Freely Available
awk
Implementations - B.6 Summary
- B.1 The
- Appendix C Implementation Notes
- Appendix D Basic Programming Concepts
- Glossary
- GNU General Public License
- GNU Free Documentation License
- Index
- Appendix A The Evolution of the