AWK

AWK
AWK
Класс языка:

скриптовый, процедурный, событийно-ориентированный

Появился в:

1977

Автор(ы):

Альфред Ахо, Питер Вайнбергер и Брайан Керниган

Релиз:

IEEE Std 1003.1-2004 (POSIX) / 1985

Типизация данных:

нет

Основные реализации:

awk, GNU Awk, mawk, nawk, MKS AWK, Thompson AWK (компилятор), Awka (компилятор)

Диалекты:

old awk oawk 1977, new awk nawk 1985, GNU Awk gawk

Испытал влияние:

C, SNOBOL4, Bourne shell

Повлиял на:

Perl, Korn Shell (ksh93, dtksh, tksh), Lua

AWK — интерпретируемый скриптовый C-подобный язык построчного разбора и обработки входного потока (например, текстового файла) по заданным шаблонам. Работает в bash (SH) скриптах.

Название AWK складывается из инициалов разработчиков языка: Alfred V. Aho, 1977 в AT&T Bell Laboratories.

Содержание

Структура программы

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

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

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

Каждая запись поочерёдно сравнивается со всеми шаблонами, и каждый раз когда она соответствует шаблону, выполняется указанное действие. Если шаблон не указан, то действие выполняется для любой записи. Если не указано действие, то запись выводится. В AWK также существует 2 предопределённых шаблона BEGIN и END. BEGIN выполняется до начала обработки входного потока. END — после обработки последней записи входного потока.

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

Конструкции языка

Условия

if(условие)
then
  {
   Список действий 1
  }
else
  {
   Список действий 2
  }

Циклы

do

do{
    Тело цикла
}while (условие)

while

while(условие){
    Тело цикла
}

for (индексная форма)

Цикл for, в форме, ориентированной на обработку индексных массивов имеет вид:

for(секция инициализации;секция условия;секция обновления итератора){
    Тело цикла
}

for (ассоциативная форма)

Цикл for, в форме, ориентированной на обработку ассоциативных массивов имеет вид:

for(итератор in массив){
    Тело цикла
}


Встроенные переменные

Переменная Содержание Значение по умолчанию
ARGC Число аргументов командной строки -
ARGV Массив аргументов командной строки -
FILENAME Обрабатываемый входной файл -
FNR Номер записи в текущем файле -
FS Разделитель полей записи на вводе пробел(ы) и/или табуляция
NF Число полей в текущей записи -
NR Номер записи (общее число считанных записей) -
OFMT Формат распечатки чисел  %.6g
OFS Разделитель полей записи на выводе (символ) пробел(ы) и/или табуляция
ORS Разделитель записей на выводе AWK-программы (символ) \0
RS Разделитель записей на вводе (символ) \0
RSTART
RLENGTH
SUBSEP

Встроенные функции

Примеры

«Hello world!»

 BEGIN{print "Hello World!"; exit}

Печать длины самой длинной строки:

 { if (length($0) > max) max = length($0) }
 END { print max }

Печать всех строк длиннее 80 символов:

 { if (length($0) > 80) print $0 }

Печать всех строк, имеющих хотя бы одно поле:

 { if (NF > 0) print $0 }

Печать количества строк в файле:

 END { print NR }

Печать строк, номера которых кратны 3:

 { if (FNR%3==0) print $0 }

Печать остатка входной строки, следующего за первыми тремя полями:

 {
    # поиск начала 4-го поля...
    match($0,/[ \t]*[^ \t]*[ \t]*[^ \t]*[ \t]*[^ \t]*[ \t]*/)
    # ...печать остатка входной строки с найденой позиции
    print substr($0,1+RLENGTH)
 }

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Нужна курсовая?

Полезное


Смотреть что такое "AWK" в других словарях:

  • AWK — Información general Paradigma Programación dirigida por eventos, Programación imperativa Apareció en 1977, última revision 1985, la versión POSIX actual es IEEE Std 1003.1 2004 …   Wikipedia Español

  • awk — ist eine Programmiersprache (Skriptsprache) zur Bearbeitung und Auswertung strukturierter Textdaten, beispielsweise CSV Dateien. Der zugehörige Interpreter war eines der ersten Werkzeuge, das in der Version 3 von Unix erschien; es wird auch… …   Deutsch Wikipedia

  • Awk — Pour les articles homonymes, voir Awk (homonymie). awk dont le nom vient des trois créateurs, Alfred Aho, Peter Weinberger et Brian Kernighan est un langage de traitement de lignes, disponible sur la plupart des systèmes Unix et sous Windows avec …   Wikipédia en Français

  • AWK — es un lenguaje de programación de propósito general que fue diseñado para procesar datos basados en texto, ya sean ficheros o flujos de datos. El nombre AWK deriva de los apellidos de los autores: Alfred V. Aho, Peter J. Weinberger, y Brian W.… …   Enciclopedia Universal

  • Awk — ([add]k), a. [OE. auk, awk (properly) turned away; (hence) contrary, wrong, from Icel. [ o]figr, [ o]fugr, afigr, turning the wrong way, fr. af off, away; cf. OHG. abuh, Skr. ap[=a]c turned away, fr. apa off, away + a root ak, a[u^]k, to bend,… …   The Collaborative International Dictionary of English

  • awk — awk·ward; awk·ward·ly; awk·ward·ness; awk; …   English syllables

  • Awk — Awk, adv. Perversely; in the wrong way. L Estrange. [1913 Webster] …   The Collaborative International Dictionary of English

  • AWK —   [Abk. für Aho, Weinberger, Kernighan (die Namen der Entwickler)], eine 1977 entwickelte einfache Programmiersprache, die es ermöglicht unter Unix Textdateien nach bestimmten Textmustern zu durchsuchen und nach zuvor festgelegten Kriterien zu… …   Universal-Lexikon

  • awk — (adj.) mid 15c., turned the wrong way, from O.N. afugr turned backwards, wrong, contrary, from P.Gmc. *afug , from PIE *apu ko , from root *apo off, away (see APO (Cf. apo )). Obsolete since 17c …   Etymology dictionary

  • AWK — (Aho Weinberger Kernighan) programming language included with the UNIX operating system that is designed for processing text files (the name is made from the initials of the three inventors) …   English contemporary dictionary


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»