(gawk.info) Using BEGIN/END
Info Catalog
(gawk.info) BEGIN/END
(gawk.info) BEGIN/END
(gawk.info) I/O And BEGIN/END
Startup and Cleanup Actions
...........................
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/ { ++n }
> END { print "\"foo\" appears " n " times." }' BBS-list
-| Analysis of "foo"
-| "foo" appears 4 times.
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 `n' to zero, as `awk' does this automatically (
Variables).
The second rule increments the variable `n' every time a record
containing the pattern `foo' is read. The `END' rule prints the value
of `n' 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. `BEGIN' and `END'
rules may be intermixed with other rules. This feature was added in
the 1987 version of `awk', and is included in the POSIX standard. The
original (1978) version of `awk' required you to put the `BEGIN' rule
at the beginning of the program, and the `END' rule at the end, and
only allowed one of each. This is no longer required, but it is a good
idea in terms of program organization and readability.
Multiple `BEGIN' and `END' rules are useful for writing library
functions, since each library file can have its own `BEGIN' and/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.
Command Line Options Options, for more information on using library
functions. A Library of `awk' Functions Library Functions, for
a number of useful 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. (The
original version of `awk' used to keep reading and ignoring input until
end of file was seen.) However, if an `END' rule exists, 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 `FNR' and `NR'
variables (d.c.).
`BEGIN' and `END' rules must have actions; there is no default
action for these rules since there is no current record when they run.
Info Catalog
(gawk.info) BEGIN/END
(gawk.info) BEGIN/END
(gawk.info) I/O And BEGIN/END
automatically generated byinfo2html