awk '{print $2}' знают все, но за этим стоит язык программирования с блоками инициализации, накопительными переменными между строками и своими функциями.

  • awk 'BEGIN{print "start"} {n++} END{print "total:", n}' file — счётчик строк с сообщениями до и после обработки
  • awk '{sum[$1]+=$2} END{for (k in sum) print k, sum[k]}' file — суммировать вторую колонку по группам из первой, аналог GROUP BY
  • awk 'function sq(x){return x*x} {print sq($1)}' file — своя функция внутри awk-программы
  • awk -F: '{print $1}' /etc/passwd — свой разделитель полей вместо пробела
  • awk 'NR==FNR{a[$1]=$2; next} $1 in a{print $0, a[$1]}' ref.txt data.txt — join двух файлов по первому полю

#linux #bash