Skip to content

Instantly share code, notes, and snippets.

@tallguyjenks
Created May 30, 2020 20:34
Show Gist options
  • Save tallguyjenks/ab4bffff49be090cbb61a49088cf5eff to your computer and use it in GitHub Desktop.
Save tallguyjenks/ab4bffff49be090cbb61a49088cf5eff to your computer and use it in GitHub Desktop.
Awk Examples
#!/usr/bin/env bash
#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#
# Grab a field
# echo "hello world this is Bryan" | awk '{print $1,$5}'
#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#
# Grab a column
# echo "ajay manager account 45000
# sunil clerk account 25000
# varun manager sales 50000
# amit manager account 47000
# tarun peon sales 15000
# deepak clerk sales 23000
# sunil peon sales 13000
# satvik director purchase 80000" | awk '{print}' #adding $4 grabs a column
#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#
# Selectively output fields
# echo "ajay manager account 45000
# sunil clerk account 25000
# varun manager sales 50000
# amit manager account 47000
# tarun peon sales 15000
# deepak clerk sales 23000
# sunil peon sales 13000
# satvik director purchase 80000" | awk '/manager/ {print}'
#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#
# Variables
# $0 -- The whole line
# echo "Hello World" | awk '{print $0}'
# NR -- The Number of Records
# echo "ajay manager account 45000
# sunil clerk account 25000
# varun manager sales 50000
# amit manager account 47000
# tarun peon sales 15000
# deepak clerk sales 23000
# sunil peon sales 13000
# satvik director purchase 80000" | awk '{print NR}' # Adding $ to NR behaviour or adding ,$0
# NF -- Number of Fields
# echo "ajay manager account 45000
# sunil clerk account 25000
# varun manager sales 50000
# amit manager account 47000
# tarun peon sales 15000
# deepak clerk sales 23000
# sunil peon sales 13000
# satvik director purchase 80000" | awk '{print NF}' # Behavior of $1,NF and of $NF
#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#
# Format some output
# echo "ajay manager account 45000
# sunil clerk account 25000
# varun manager sales 50000
# amit manager account 47000
# tarun peon sales 15000
# deepak clerk sales 23000
# sunil peon sales 13000
# satvik director purchase 80000" | awk '{print NR " - " $1}'
#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#
# BEGIN and END
# BEGIN and END are special conditionas that only get triggered once per run
# BEGIN gets triggered before processing any line
# END gets triggered after all lines have been processed
# echo "ajay manager account 45000
# sunil clerk account 25000
# varun manager sales 50000
# amit manager account 47000
# tarun peon sales 15000
# deepak clerk sales 23000
# sunil peon sales 13000
# satvik director purchase 80000" | awk '{print NR}' # Add BEGIN & END
#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#===#
# Setting a delimiter
# echo "ajay/manager/account/45000
# sunil/clerk/account/25000
# varun/manager/sales/50000
# amit/manager/account/47000
# tarun/peon/sales/15000
# deepak/clerk/sales/23000
# sunil/peon/sales/13000
# satvik/director/purchase/80000" | awk -F/ '{print $1,$4}' # -F can take regex '[,-/]'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment