Содержание
Язык AWK
Язык AWK был спроектирован сотрудниками Bell Labs как инструменты для работы с текстом. Есть в больнистве дистрибутивов линукс. Само название AWK является аббревиатурой фамилий его разработчиков Alfred Aho, Peter Weinberger, и Brian Kernighan.
Основы языка
AWK как и ЯзыкSed? ориентирован на построчную обработку текста. AWK может быть как частью конвеера так и работать c файлами. Файл трактуется как набор записей(records). В свою очередь запись состоит из последовательности полей(fields). По умолчанию в AWK строка рассматривается как запись, тогда первое слово в строке будет первым полем, второе -- вторым и т.д.
$ echo 'Hello, World!' | awk '{ print $0 }' $ cat file.csv | sed -n '2 { p; }' | awk -F'\t' 'END { print NF; }'
Структура программы на AWK выглядит сдедующим образом:
шаблон { действие }
AWK сканирует входной поток на наличие шаблонов, в случае совпадения выполняется указанные действия. Как шаблон так и действие могут отсутствовать, но не одновременно. При отсутствии шаблона действие применяется ко всем строкам. Если отсутствует действие, то каждая строка содержащая шаблон просто печатается.
В AWK существуют 2 специальных шаблона - BEGIN и END. Действие, описанное для шаблона BEGIN выполняется до обработки первой записи, действие для шаблона END выполняется после обработки последней записи. Например:
$ echo -e "1\n2\n3" | awk 'BEGIN {a = 0} {a += $1} END {printf("total sum is %d\n", a)}' total sum is 6
На самом деле в примере выше блок с BEGIN лишний так как любая неинициализированная переменная содержит 0.
Переменные
AWK и Sed
Сравнение AWK с другими языками программирования
КатегорияЯзыки?