Gawk

From wikinotes

AWK is a scripting language that was originally designed for manipulating tables and presenting them in human-readable formats. It is useful on the commandline, I'd prefer to use a more powerful language than awk than use it for scripting.


WARNING:

There are two main variations of the unix coreutils (Gnu/BSD), each has different parameters etc. If you are expecting to use awk across different platforms, make no assumptions.

Notes

gawk usage
gawk variables
gawk datatypes
gawk conditionals
gawk loops
gawk print

Syntax

split

You can't call awk -F from within an awk script. But you can use split to tokenize within an awk script.

split("this is my string", a, " ")
a[1] = this
a[2] = is
echo "aaa bbb cc/11/22" \
    | awk '{ split($3, a, "/"); print(a[2]); }'  
    # 11

NOTE:

awk has no way of measuring size of an array. You can however use split on a variable, and count the number of tokens

WARNING:

awk array indexes start at 1

match

match checks for a matching string, returns char number if found, otherwise returns a 0

match($0, "searchterm")
echo "abcdefg" | awk '{var=match($0, "cd"); print var}'
#> 3

echo "abcdefg" | awk '{var=match($0, "zef"); print var}'
#> 0

echo "abcdefg" | awk '{ 
   if(match($0, "cd")) { 
       print "match found"; 
   } 
}'
#> match found

system

Executes a command in shell or cmd from an awk script. Assigning to a variable only gives return value (1,0)

system(ls -la);

math

var+= 1;
var=( (100/2) * 3 );

References

http://www.funtoo.org/wiki/Awk_by_Example,_Part_1
http://www.math.utah.edu/docs/info/gawk_7.html