Data extraction and reporting using awk command in Linux

awk is a very powerful tool in Linux. awk allows you to do all things that can be done using grep, sed commands.

awk assumes the file as a database table. Each line is considered as a row and columns are separated by space. By default, space is used as a delimiter seperating columns. but you can mention different delimiter (field separator) by using FS option. Value in the first column can be accessed using $1, Value in the second column can be accessed using $2 and so on. Entire line (record) can be accessed using $0.

Below examples will help you understand how it work.

  1. awk ‘BEGIN{FS=”:”} {print $1}’ f1.txt – This command will print first column from the file f1.txt. Note that we have specified “:” as the field separator.
  2. awk ‘BEGIN{FS=”:”} $1==’abc’ {print $0}’ f1.txt – This command will print only those lines from f1.txt where the value of first column is “abc”
  3. awk ‘BEGIN{FS=”:”} $1!=’abc’ {print $0}’ f1.txt – This command will print only those lines from f1.txt where the value of first column is  not “abc”
  4. awk ‘/abc/{print $1}’ f1.txt – This command will print the first column from the file f1.txt where that lines matches the pattern “abc”. Note that
    you can give the regular expressions in the pattern.
  5. awk ‘!/abc/{print $1}’ f1.txt – This command will print the first column from the file f1.txt where lines do not match the pattern “abc”.
  6. awk ‘NR==7,NR==9’ f1.txt – This command will print lines 7 and 9 from file
    f1.txt

Replacing the text using awk command

You can use below syntax to replace the pattern using awk.

$ awk ‘{gsub(/pattern/,”replacement”)}’ <file-name>

You may also like...