Skip to main content

GNU awk

gawk - pattern scanning and processing language

AWK is named after the surnames of its three authors, who are Alfred Aho, Peter Weinberger, and Brian Kernighan.

mawk, gawk



Pre-defined variables in awk

  • $0: entire current record/line
  • $1, $2, ...: the first, second,... fields in current record/line
  • NF: number of fields
  • NR: number of records/lines

Built-in functions

Examples

Print the first column of /etc/passwd file. The /etc/passwd uses ':' (colon) as separator between columns.

$ awk -F: '{ print $1}' /etc/passwd

Print process id (PID) column

ps | print '{print $1}'

Create get_tags_pre.awk file with content

/<pre>/,/<\/pre>/ { print; }

Get all content inside <pre> tags

cat inputfile.txt | awk -f get_tags_pre.awk > outputfile.txt

Get just indented lines below "Standard IP access list 11"

root@T420:~# cat acl1.txt |  awk '/access list 11/ && !f{f=1;x=$0;sub(/[^ ].*/,"",x);x=x" ";print;next} f {if (substr($0,1,length(x))==x)print; else f=0}'
Standard IP access list 11
    10 permit 212.1.116.12

Print parent rule and subrules in checkpoint firewall

awk -F";" -v parentrule="" 'BEGIN{print "===START==="}; $2 ~ /8030 -/ || $1 ~ parentrule {split($1,array,".");parentrule=array[1]; print $0;}; END{print "\n===END===\n";}' samplerule.csv

Extract 14-character-lines from a text file

┌──(root㉿LenovoX230)-[/usr/share/seclists/Usernames]
└─# gawk "length == 14" xato-net-10-million-usernames.txt >> 14-characters.txt

References

The GNU Awk User’s Guide

Books about gawk

GAWK: Effective AWK Programming by Arnold D. Robbins

Courses about awk

Linux Administration with sed and awk | Andrew Mallett

Practice

>>> THM | Linux Modules

Popular posts from this blog

Powershell: Remove-Item

Use Remove-Item to delete files, folders, and more than that

Linux command: Check Current Shell

What is your current shell ?

Linux command: top

NAME        top - display Linux processes SYNOPSIS        top -hv|-bcHiOSs -d secs -n max -u|U user -p pid -o fld -w [cols]        The traditional switches `-' and whitespace are optional. DESCRIPTION        The  top program provides a dynamic real-time view of a running system.  It can display        system summary information as well as a list of processes or  threads  currently  being        managed  by  the  Linux  kernel.  The types of system summary information shown and the        types, order and size of information displayed for processes are all user  configurable        and that configuration can be made persistent across restarts.        The  program  provides a limited interactive interface for process manipulation ...