Go to the first, previous, next, last section, table of contents.
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 section 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 section Invoking awk, 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.
Go to the first, previous, next, last section, table of contents.