Go forward to Empty.
Go backward to Ranges.
Go up to Patterns.
`BEGIN' and `END' Special Patterns
==================================
`BEGIN' and `END' are special patterns. They are not used to match
input records. Rather, they are used for supplying start-up or
clean-up information to your `awk' script. A `BEGIN' rule is executed,
once, before the first input record has been read. An `END' rule is
executed, once, after all the input has been read. For example:
awk 'BEGIN { print "Analysis of `foo'" }
/foo/ { ++foobar }
END { print "`foo' appears " foobar " times." }' BBS-list
This program finds the number of records in the input file `BBS-list'
that contain the string `foo'. The `BEGIN' rule prints a title for the
report. There is no need to use the `BEGIN' rule to initialize the
counter `foobar' to zero, as `awk' does this for us automatically
(see Variables.).
The second rule increments the variable `foobar' every time a record
containing the pattern `foo' is read. The `END' rule prints the value
of `foobar' at the end of the run.
The special patterns `BEGIN' and `END' cannot be used in ranges or
with boolean operators (indeed, they cannot be used with any operators).
An `awk' program may have multiple `BEGIN' and/or `END' rules. They
are executed in the order they appear, all the `BEGIN' rules at
start-up and all the `END' rules at termination.
Multiple `BEGIN' and `END' sections are useful for writing library
functions, since each library can have its own `BEGIN' or `END' rule to
do its own initialization and/or cleanup. Note that the order in which
library functions are named on the command line controls the order in
which their `BEGIN' and `END' rules are executed. Therefore you have
to be careful to write such rules in library files so that the order in
which they are executed doesn't matter. See Invoking `awk': Command Line, for more information on using library functions.
If an `awk' program only has a `BEGIN' rule, and no other rules,
then the program exits after the `BEGIN' rule has been run. (Older
versions of `awk' used to keep reading and ignoring input until end of
file was seen.) However, if an `END' rule exists as well, then the
input will be read, even if there are no other rules in the program.
This is necessary in case the `END' rule checks the `NR' variable.
`BEGIN' and `END' rules must have actions; there is no default
action for these rules since there is no current record when they run.