Skip to main content

Complex examples of AWK

AWK is very powerful and newer generations nawk and gawk do have better flexibility. They are widely used by fellow scripters due to its sheen power.
Let's look into some complex examples of AWK variants.
I would recommend using nawk format as its installed in most of the Unix systems (AIX, Linux, Ubuntu have nawk by default)

Syntax for one line awk commands

 
awk:  awk -Fs                     '/search/ {action}' awkvar=$shellvar infile
nawk: awk -Fs -v awkvar=$shellvar '/search/ {action}'                  infile
gawk: awk -Fs -v awkvar=$shellvar '/search/ {action}'                  infile

 

BEGIN { }, { } and end { }

An awk script can have three types of blocks.
One of them must be there.
a) The BEGIN{} block is processed before the file is checked.
b) The {} block runs for every line of input
c) The END{} block is processed after the final line of the input file.

 
awk '
BEGIN    { myvalue = 1000 }
/debt/   { myvalue -= $2  }
/want/   { myvalue += $4  }
END      { print myvalue  }
' inputFile

 

String functions
sub(regexp,sub)     Substitute sub for regexp in $0
sub(regexp,sub,var)     Substitute sub for regexp in var
gsub(regexp,sub)     Globally substitute sub for regexp in $0
gsub(regexp,sub,var)     Globally substitute sub for regexp in var
split(var,arr)     Split var on white space into arr
split(var,arr,sep)     Split var on white space into arr on sep as separator
index(bigvar,smallvar)     Find index of smallvar in bigvar
match(bigvar,expr)     Find index for regexp in bigvar
length(var)     Number of characters in var
substr(var,num)     Extract chars from posistion num to end
substr(var,num1,num2)     Extract chars from num1 through num2
sprintf(format,vars)     Format vars to a string

#Multiple Field separator in Awk. use [][]. Below example will split whenever it finds  "?>" in the data

awk -F'[?][>]' '{print $2}' /tmp/abc.out

Courtesy: http://www.well.ox.ac.uk/~johnb/comp/awk/awk.html

Popular posts from this blog

Syslog Standards: A simple Comparison between RFC3164 & RFC5424

Syslog Standards: A simple Comparison between RFC3164 (old format) & RFC5424 (new format) Though syslog standards have been for quite long time, lot of people still doesn't understand the formats in detail. The original standard document is quite lengthy to read and purpose of this article is to explain with examples Some of things you might need to understand The RFC standards can be used in any syslog daemon (syslog-ng, rsyslog etc.) Always try to capture the data in these standards. Especially when you have log aggregation like Splunk or Elastic, these templates are built-in which makes your life simple. Syslog can work with both UDP & TCP  Link to the documents the original BSD format ( RFC3164 ) the “new” format ( RFC5424 ) RFC3164 (the old format) RFC3164 originated from combining multiple implementations (Year 2001) ...

Create your own Passport Photo using GIMP

This tutorial is for semi-techies who knows a bit of GIMP (image editing).   This tutorial is for UK style passport photo ( 45mm x 35 mm ) which is widely used in UK, Australia, New Zealand, India etc.  This is a quick and easy process and one can create Passport photos at home If you are non-technical, use this link   .  If you want to create United States (USA) Passport photo or Overseas Citizen of India (OCI) photo, please follow this link How to Make your own Passport Photo - Prerequisite GIMP - One of the best image editing tools and its completely Free USB stick or any memory device to store and take to nearby shop A quality Digital camera Local Shops where you can print. Normally it costs (£0.15 or 25 US cents) to print 8 photos Steps (Video Tutorial attached blow of this page) Ask one of your colleague to take a photo  of you with a light background. Further details of how to take a photo  yourself       ...

Kubernetes & n8n: Setup n8n using K8S (Part 1)

Deploying n8n workflow automation with Kubernetes  Intro Aim of this article is to Publish n8n workflow automation tool into a Kubernetes environment.  n8n is quite flexible and can be used for IOT devices for your hobby projects to act as a SOAR tool at enterprise level. NOTE A new version " Scaling n8n on Kuberetes " is written for HELM chart based installation Pre-Reqs Familiarity with Kubernetes (k8s) Package components The deployment is split into following n8n-pvc0.yaml   - PersistentVolumeClaim To mount directory for n8n database and configs n8n-pvc1.yaml   - PersistentVolumeClaim To mount directory for n8n workflows n8n-deployment.yaml   - Actual deployment definitions n8n-svc.yaml   - Service To expose n8n for UI access n8n-pvc0.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: creationTimestamp: null labels: io.kompose.service: n8n-claim0 name: n8n-claim0 spec: accessModes: - ReadWriteOnce res...