DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(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