Инструменты пользователя

Инструменты сайта


Боковая панель

Связь

awk

AWK

AWK - интерпретируемый скриптовый C- подобный язык построчного разбора и обработки входного потока (например, текстового файла) по заданным шаблонам. Утилита AWK, была создана в 1977г. и объединяла свойства фильтров sed и GNU grep. В дальнейшем её возможности значительно расширились. Одним из расширений awk стала nawk, с помощью которой можно обращаться к нескольким файлам в одной программе. gawk - следующий этап развития awk, в ней реализованы как возможности nawk, так и стандартные средства awk.

AWK рассматривает входной поток как список записей. Каждая запись делится на поля. На основе этой информации выполняется некоторый определённый программистом алгоритм обработки. По умолчанию разделителем записей является символ новой строки (то есть записи — это то же самое, что строки), разделителем полей - символ пробела или табуляции, или последовательность таких символов. Символы-разделители можно явно определить в программе.

AWK- программа состоит из операторов (правил), имеющих вид:

 шаблон {действие}
 шаблон {действие}
 . . .

Каждая запись поочерёдно сравнивается со всеми шаблонами, и каждый раз когда она соответствует шаблону, выполняется указанное действие. Если шаблон не указан, то действие выполняется для любой записи. Если не указано действие, то запись выводится.

Действие может состоять из последовательности операторов, разделяемой точкой с запятой, переводом строки или закрывающей скобкой.

Примеры использования AWK

  • Печать всех строк длиннее 80 символов:
    $ cat install.sh | awk '{if (length($0) > 80) print $0}'
  • Вывести пятое поле из вывода команды netstat:
    $ netstat -ntu | awk '{print $5}'
  • Вывести строки, в которых значение первого столбца равно udp:
    # netstat -ntu | awk '$1 == "udp"'
  • Завершить процесс node (слушающему TCP -порт 1277) по его PID:
    #!/bin/bash
    kill -9 `lsof -i:1277 | awk '$0 ~ /node/ {print $2}'`
  • Вывести третью строку из файлы .bash_history
    # awk 'NR==3{print}' .bash_history

Ссылки

awk.txt · Последние изменения: 2012/06/22 09:15 (внешнее изменение)