====== AWK - AWK Math Operations ======
===== Basic Math Operations =====
Assuming a file, **test2.txt** exists with following contents:
pens 10 1.99
pencils 20 3.99
staplers 5 8.99
rulers 12 2.50
----
Issue the following command:
awk '{print $1,"QTY: "$2,"PRICE: "$3,"TOTAL: "$2*$3}' 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
**NOTE:** The total multiples fields $2 with $3.
----
AWK supports the full range of arithmetic operators including:
^Operator^Details^
|+|Adds numbers together.|
|-|Subtracts.|
|*|Multiples.|
|/|Divides.|
|^|Performs exponential mathematics.|
|%|Gives the modulo (remainder).|
|++|Adds one to the value of a variable.|
|+=|Assigns the result of an addition operation to a variable.|
|--|Subtracts one from a variable.|
|-=|Assigns the result of a subtraction operation to a variable.|
|*=|Assigns the result of multiplication.|
|/=|Assigns the result of division.|
|%=|Assigns the result of a modulo operation.|
----
===== Using a Variable =====
awk '{x=x+$2} {print x}' test2.txt
returns:
10
30
35
47
**NOTE:** This assigns a variable named x.
It has shown a running total and calculated an overall total of 47 items.
----
===== Advanced Example Using a Variable =====
awk '{x=x+($2*$3)}{print $1,"QTY: "$2,"PRICE: "$3,"TOTAL: "$2*$3,"BAL: "x}' test2.txt
returns:
pens QTY: 10 PRICE: 1.99 TOTAL: 19.9 BAL: 19.9
pencils QTY: 20 PRICE: 3.99 TOTAL: 79.8 BAL: 99.7
staplers QTY: 5 PRICE: 8.99 TOTAL: 44.95 BAL: 144.65
rulers QTY: 12 PRICE: 2.50 TOTAL: 30 BAL: 174.65
**NOTE:** This lists each record while assigning a total value and keeping a running balance.
----