Go to the first, previous, next, last section, table of contents.


A Library of @command{awk} Functions

section User-Defined Functions, describes how to write your own @command{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.

One valuable way to learn a new programming language is to read programs in that language. To that end, this major node and @ref{Sample Programs, ,Practical @command{awk} Programs}, provide a good-sized body of code for you to read, and hopefully, to learn from.

This major node presents a library of useful @command{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.

section Extracting Programs from Texinfo Source Files, 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 @command{gawk} distribution.)

If you have written one or more useful, general purpose @command{awk} functions and would like to contribute them to the author's collection of @command{awk} programs, see section How to Contribute, for more information.

The programs in this major node and in @ref{Sample Programs, ,Practical @command{awk} Programs}, freely use features that are @command{gawk}-specific. It is straightforward to rewrite these programs for different implementations of @command{awk}.

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 @command{gawk}.

A number of programs use nextfile (@pxref{Nextfile Statement, ,Using @command{gawk}'s nextfile Statement}) to skip any remaining input in the input file. section Implementing nextfile as a Function, shows you how to write a function that does the same thing.

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(50) 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 only use lowercase letters.


Go to the first, previous, next, last section, table of contents.