manpagez: man pages & more
info gawk
Home | html | info | man

File: gawk.info,  Node: Library Functions,  Next: Sample Programs,  Prev: Functions,  Up: Top

10 A Library of 'awk' Functions
*******************************

*note User-defined:: describes how to write your own 'awk' functions.
Writing functions is important, because it allows you to encapsulate
algorithms and program tasks in a single place.  It simplifies
programming, making program development more manageable and making
programs more readable.

   In their seminal 1976 book, 'Software Tools',(1) Brian Kernighan and
P.J. Plauger wrote:

     Good Programming is not learned from generalities, but by seeing
     how significant programs can be made clean, easy to read, easy to
     maintain and modify, human-engineered, efficient and reliable, by
     the application of common sense and good programming practices.
     Careful study and imitation of good programs leads to better
     writing.

   In fact, they felt this idea was so important that they placed this
statement on the cover of their book.  Because we believe strongly that
their statement is correct, this major node and *note Sample Programs::,
provide a good-sized body of code for you to read and, we hope, to learn
from.

   This major node presents a library of useful 'awk' functions.  Many
of the sample programs presented later in this Info file use these
functions.  The functions are presented here in a progression from
simple to complex.

   *note Extract Program:: presents a program that you can use to
extract the source code for these example library functions and programs
from the Texinfo source for this Info file.  (This has already been done
as part of the 'gawk' distribution.)

   If you have written one or more useful, general-purpose 'awk'
functions and would like to contribute them to the 'awk' user community,
see *note How To Contribute::, for more information.

   The programs in this major node and in *note Sample Programs::,
freely use 'gawk'-specific features.  Rewriting these programs for
different implementations of 'awk' is pretty straightforward:

   * Diagnostic error messages are sent to '/dev/stderr'.  Use '| "cat
     1>&2"' instead of '> "/dev/stderr"' if your system does not have a
     '/dev/stderr', or if you cannot use 'gawk'.

   * Finally, some of the programs choose to ignore upper- and lowercase
     distinctions in their input.  They do so by assigning one to
     'IGNORECASE'.  You can achieve almost the same effect(2) by adding
     the following rule to the beginning of the program:

          # ignore case
          { $0 = tolower($0) }

     Also, verify that all regexp and string constants used in
     comparisons use only lowercase letters.

* Menu:

* Library Names::               How to best name private global variables in
                                library functions.
* General Functions::           Functions that are of general use.
* Data File Management::        Functions for managing command-line data
                                files.
* 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.

   ---------- Footnotes ----------

   (1) Sadly, over 35 years later, many of the lessons taught by this
book have yet to be learned by a vast number of practicing programmers.

   (2) The effects are not identical.  Output of the transformed record
will be in all lowercase, while 'IGNORECASE' preserves the original
contents of the input record.

© manpagez.com 2000-2025
Individual documents may contain additional copyright information.