Awk

I forgot most of awk after college. Now that I look at it again, it does help in many cases when I need to work with csv/tsv files. There is no need to write a simple python script to parse lines out and do some printing.

Sample log lines

07.46.199.184 [28/Sep/2010:04:08:20] "GET /robots.txt HTTP/1.1" 200 0 "msnbot"
123.125.71.19 [28/Sep/2010:04:20:11] "GET / HTTP/1.1" 304 - "Baiduspider"

Sample cmds

awk '{print $0}'
awk '{print $1}' logs.txt
awk '{print $1, $(NF-2) }' logs.txt
awk '{print NR ") " $1 " -> " $(NF-2)}' logs.txt
awk '{print $2}' logs.txt
awk '{print $2}' logs.txt | awk 'BEGIN{FS=":"}{print $1}'
awk '{print $2}' logs.txt | awk 'BEGIN{FS=":"}{print $1}' | sed 's/\[//'
awk '{if ($(NF-2) == "200") {print $0}}' logs.txt
awk '{a+=$(NF-2); print "Total so far:", a}' logs.txt
awk '{a+=$(NF-2)}END{print "Total:", a}' logs.txt

Note: awk is 1-based. $NF is number of fields. NR is row number. FS is field separator.

Ref: https://gregable.com/2010/09/why-you-should-know-just-little-awk.html

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s