awkref.txt 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. # awk reference - text processing for tabular data
  2. records:
  3. default - line
  4. fields:
  5. default - separated by whitespace character
  6. awk '<pattern>'
  7. awk '{ <action> }'
  8. awk '<pattern> { <action> }'
  9. types:
  10. * string
  11. * number
  12. # awk program
  13. awk -f progfile <optional list of input files>
  14. echo 'hello universe this is saran' | awk '{print $1,$5}'
  15. echo 'hello universe this is saran' | cut -d ' ' -f 1,5
  16. echo 'ajay manager account 50000
  17. satvik director purchase 80000' | awk '{print}'
  18. echo 'ajay manager account 50000
  19. satvik director purchase 80000' | awk '{print $4}'
  20. echo 'ajay manager account 50000
  21. satvik director purchase 80000' | awk '/manager/ {print}'
  22. # $0 - entire line
  23. echo 'hello universe' | awk '{print $0}'
  24. # NR - number of records
  25. echo 'ajay manager account 50000
  26. satvik director purchase 80000' | awk '{print NR}'
  27. echo 'ajay manager account 50000
  28. satvik director purchase 80000' | awk '{print NR,$0}'
  29. # NF - number of fields
  30. echo 'ajay manager account 50000
  31. satvik director purchase 80000' | awk '{print NF}'
  32. echo 'ajay manager account 50000
  33. satvik director purchase 80000' | awk '{print $1,NF}'
  34. # $NF - last value
  35. echo 'ajay manager account 50000
  36. satvik director purchase 80000' | awk '{print $1,$NF}'
  37. echo 'ajay manager account 50000
  38. satvik director purchase 80000' | awk '{print NR " - " $1}'
  39. # BEGIN & END
  40. echo 'ajay manager account 50000
  41. satvik director purchase 80000' | awk 'BEGIN {print NR}'
  42. echo 'ajay manager account 50000
  43. satvik director purchase 80000' | awk 'END {print NR}'
  44. # -F can take regex '[-,/]'
  45. echo 'ajay/manager/account/50000
  46. satvik/director/purchase/80000' | awk -F/ '{print NR}'
  47. echo 'ajay/manager,account-50000
  48. satvik,director/purchase-80000' | awk -F'[-,/]' '{print NR}'