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--2026

Free Software Foundation, Inc.

This is Edition 5.4 of GAWK: Effective AWK Programming: A User's Guide for GNU Awk, for the 5.4.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.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''.

 a. The FSF's Back-Cover Text is: ``You have the freedom to copy and modify this GNU manual.''

To my parents, for their love, and for the wonderful example they set for me.

To my wife Miriam, for making me complete. Thank you for building your life together with me.

To our children Chana, Rivka, Nachum and Malka, for enrichening our lives in innumerable ways.

Major Contributors to gawk
**************************

     Always give credit where credit is due.

This section names the major contributors to gawk

  * Dr. Alfred V. Aho, Dr. Peter J. Weinberger, and Dr. Brian W. Kernighan, all of Bell Laboratories, designed and implemented Unix awk, from which gawk gets the majority of its feature set.

  * Paul Rubin did the initial design and implementation in 1986, and wrote

  * Jay Fenlason finished the initial implementation.

  * Diane Close to around 90 pages.

  * Richard Stallman helped finish the implementation and the initial draft of this He is also the founder of the FSF and the GNU Project.

  * John Woods contributed parts of the code (mostly fixes) in the initial version of gawk.

  * In 1988, David Trueman took over primary maintenance of gawk, making it compatible with ``new'' awk, and greatly improving its performance.

  * Conrad Kwok, Scott Garfinkle, and Kent Williams did the initial ports to MS-DOS with various versions of MSC.

  * Pat Rankin provided the VMS port and its documentation.

  * Hal Peterson provided help in porting gawk to Cray systems. (This is no longer supported.)

  * Kai Uwe Rommel provided the initial port to OS/2 and its documentation. (This is no longer supported.)

  * Michal Jaegermann provided the port to Atari systems and its documentation. (This port is no longer supported.) He continues to provide portability checking, and has done a lot of work to make sure gawk works on non-32-bit systems.

  * Fred Fish provided the port to Amiga systems and its documentation. (With Fred's sad passing, this is no longer supported.)

  * Scott Deifik formerly maintained the MS-DOS port using DJGPP.

  * Eli Zaretskii currently maintains the MS-Windows port using MinGW.

  * Juan Grigera provided a port to Windows32 systems. (This is no longer supported.)

  * For many years, Dr. Darrel Hankerson acted as coordinator for the various ports to different PC platforms and created binary distributions for various PC operating systems. He was also instrumental in keeping the documentation up to date for the various PC platforms.

  * Christos Zoulas provided the extension() built-in function for dynamically adding new functions. (This was obsoleted at gawk 4.1.)

  * Jürgen Kahrs contributed the initial version of the TCP/IP networking code and documentation, and motivated the inclusion of the |& operator.

  * Stephen Davies provided the initial port to Tandem systems and its documentation. (However, this is no longer supported.) He was also instrumental in the initial work to integrate the byte-code internals into the gawk code base. Additionally, he did most of the work enabling the pretty-printer to preserve and output comments.

  * Matthew Woehlke provided improvements for Tandem's POSIX-compliant systems.

  * Martin Brown provided the port to BeOS and its documentation. (This is no longer supported.)

  * Arno Peters did the initial work to convert gawk to use GNU Automake and GNU gettext.

  * Alan J. Broder provided the initial version of the asort() function as well as the code for the optional third argument to the match() function.

  * Andreas Buening updated the gawk port for OS/2. (This is no longer supported.)

  * Isamu Hasegawa, of IBM in Japan, contributed support for multibyte characters.

  * Michael Benzinger contributed the initial code for switch statements.

  * Patrick T.J. McPhee contributed the code for dynamic loading in Windows32 environments. (This is no longer supported.)

  * Anders Wallin helped keep the VMS port going for several years.

  * Assaf Gordon contributed the initial code to implement the --sandbox option.

  * John Haque made the following contributions:

       - The modifications to convert gawk into a byte-code interpreter, including the debugger

       - The addition of true arrays of arrays

       - The additional modifications for support of arbitrary-precision arithmetic

       - The initial text of Arbitrary Precision Arithmetic

       - The work to merge the three versions of gawk into one, for the 4.1 release

       - Improved array internals for arrays indexed by integers

       - The improved array sorting features were also driven by John, together with Pat Rankin

  * Panos Papadopoulos contributed the original text for Include Files.

  * Efraim Yawitz contributed the original text for Debugger.

  * John Naman contributed the original text for Shadowed Variables.

  * Stuart Ferguson reworked the text in Splitting By Content.

  * The development of the extension API first released with gawk 4.1 was driven primarily by Arnold Robbins and Andrew Schorr, with notable contributions from the rest of the development team.

  * John Malmberg contributed significant improvements to the OpenVMS port and the related documentation.

  * Antonio Giovanni Colombo rewrote a number of examples in the early chapters that were severely dated, for which I am incredibly grateful. He also provided and maintains the Italian translation.

  * Marco Curreli, together with Antonio Colombo, translated this distribution.

  * Juan Manuel Guerrero took over maintenance of the DJGPP port. (This is no longer supported.)

  * ``Jannick'' provided support for MSYS2.

  * Arnold Robbins has been working on gawk since 1988, at first helping David Trueman, and as the primary maintainer since late in 1993.