Table of Contents

AWK - BEGIN and END

Actions can be specified to take place prior to the actual start of processing or after it has been completed with BEGIN and END statements respectively.


Assuming a file, test.txt, exists with the following contents:

10   Peter     Terence   Roux        45
11   Virginia  Genevieve  Roux       45
12   Felix     Devon     Roux         5
13   David     Bruce     Stevenson   48
14   Bob       James     Smith       16
48   Adam      Winter    Ridley      23

Basic BEGIN Statement

Issue the following command:

awk 'BEGIN {print "NUMBER ITEM QUANTITY PRICE"}' test.txt

returns:

NUMBER   ITEM   QUANTITY   PRICE

This would be more useful when run as:

awk 'BEGIN {print "NUMBER ITEM QUANTITY PRICE"}{print NR,$1,$2,$3}' test.txt

returns:

NUMBER ITEM QUANTITY PRICE
1 10 Peter Terence
2 11 Virginia Genevieve
3 12 Felix Devon
4 13 David Bruce
5 14 Bob James
6 48 Adam Winter

NOTE:

  • The BEGIN has allowed the header to be added to the output.
  • The NR variable used in the 2nd print numbers each line. It is a built-in variable of AWK.

Basic END Statement

Assuming a file, test2.txt, exists with the following contents:

pens      10    1.99
pencils   20    3.99
staplers   5    8.99
rulers    12    2.50

Issue the following command:

awk '{x=x+($2*$3)} END {print "Total Value of Inventory: "x}' test2.txt

returns:

Total Value of Inventory: 174.65

This would be more useful when run as:

awk '{x=x+($2*$3)} {print $1,"QTY: "$2,"PRICE:"$3,"TOTAL: "$2*$3} END {print "Total Value of Inventory: " x}' test2.txt

returns:

pens QTY: 10 PRICE:1.99 TOTAL: 19.9
pencils QTY: 20 PRICE:3.99 TOTAL: 79.8
staplers QTY: 5 PRICE:8.99 TOTAL: 44.95
rulers QTY: 12 PRICE:2.50 TOTAL: 30
Total Value of Inventory: 174.65

NOTE:

  • The END has allowed a total line to be added to the output.
    • It is only run at the end.