06 Basic AWK command - kumar159man/MyShellLearning GitHub Wiki

Basics of awk command

Let's learn basics of awk command

Using awk command

myubuntu@myubuntu-VirtualBox:~$ ls -l
total 48
drwxr-xr-x 5 myubuntu myubuntu  4096 Jul  1 20:47 Desktop
drwxr-xr-x 2 myubuntu myubuntu  4096 Jun 26 11:07 Documents
drwxr-xr-x 2 myubuntu myubuntu  4096 Jun 26 11:07 Downloads
-rw-rw-r-- 1 myubuntu myubuntu 13857 Jun 26 11:28 get-docker.sh
drwxr-xr-x 2 myubuntu myubuntu  4096 Jun 26 11:07 Music
drwxr-xr-x 2 myubuntu myubuntu  4096 Jun 26 11:07 Pictures
drwxr-xr-x 2 myubuntu myubuntu  4096 Jun 26 11:07 Public
drwxr-xr-x 2 myubuntu myubuntu  4096 Jun 26 11:07 Templates
drwxr-xr-x 2 myubuntu myubuntu  4096 Jun 26 11:07 Videos

Let's get the file\directory name using awk

myubuntu@myubuntu-VirtualBox:~$ ls -l | awk '{print $9}'

Desktop
Documents
Downloads
get-docker.sh
Music
Pictures
Public
Templates
Videos

$9 is the field where the file/directory name

Field Records and Default delimiter of awk

In awk rows are reffered as records

How to get number of records

myubuntu@myubuntu-VirtualBox:~$ ls -l | awk '{print NR'}
1
2
3
4
5
6
7
8
9
10

How to get number of fields

myubuntu@myubuntu-VirtualBox:~$ ls -l | awk '{print NF'}
2
9
9
9
9
9
9
9
9
9

By default awk takes space as a delimiter

Printing all the records with record number and field number

myubuntu@myubuntu-VirtualBox:~$ ls -l | awk '{print NR $0 NF}'
1total 482
2drwxr-xr-x 5 myubuntu myubuntu  4096 Jul  1 20:47 Desktop9
3drwxr-xr-x 2 myubuntu myubuntu  4096 Jun 26 11:07 Documents9
4drwxr-xr-x 2 myubuntu myubuntu  4096 Jun 26 11:07 Downloads9
5-rw-rw-r-- 1 myubuntu myubuntu 13857 Jun 26 11:28 get-docker.sh9
6drwxr-xr-x 2 myubuntu myubuntu  4096 Jun 26 11:07 Music9
7drwxr-xr-x 2 myubuntu myubuntu  4096 Jun 26 11:07 Pictures9
8drwxr-xr-x 2 myubuntu myubuntu  4096 Jun 26 11:07 Public9
9drwxr-xr-x 2 myubuntu myubuntu  4096 Jun 26 11:07 Templates9
10drwxr-xr-x 2 myubuntu myubuntu  4096 Jun 26 11:07 Videos9

Printing multiple fields

myubuntu@myubuntu-VirtualBox:~$ ls -l | awk '{print $1,$4}'
total 
drwxr-xr-x myubuntu
drwxr-xr-x myubuntu
drwxr-xr-x myubuntu
-rw-rw-r-- myubuntu
drwxr-xr-x myubuntu
drwxr-xr-x myubuntu
drwxr-xr-x myubuntu
drwxr-xr-x myubuntu
drwxr-xr-x myubuntu
myubuntu@myubuntu-VirtualBox:~$ 

Printing field of a specific row

myubuntu@myubuntu-VirtualBox:~$ ls -l | awk 'NR==2 {print $1,$9}'
drwxr-xr-x Desktop
myubuntu@myubuntu-VirtualBox:~$ 

Ignore first line in ls -l

myubuntu@myubuntu-VirtualBox:~$ ls -l | awk 'NR>1 {print $0}'
drwxr-xr-x 5 myubuntu myubuntu  4096 Jul  1 20:47 Desktop
drwxr-xr-x 2 myubuntu myubuntu  4096 Jun 26 11:07 Documents
drwxr-xr-x 2 myubuntu myubuntu  4096 Jun 26 11:07 Downloads
-rw-rw-r-- 1 myubuntu myubuntu 13857 Jun 26 11:28 get-docker.sh
drwxr-xr-x 2 myubuntu myubuntu  4096 Jun 26 11:07 Music
drwxr-xr-x 2 myubuntu myubuntu  4096 Jun 26 11:07 Pictures
drwxr-xr-x 2 myubuntu myubuntu  4096 Jun 26 11:07 Public
drwxr-xr-x 2 myubuntu myubuntu  4096 Jun 26 11:07 Templates
drwxr-xr-x 2 myubuntu myubuntu  4096 Jun 26 11:07 Videos
⚠️ **GitHub.com Fallback** ⚠️