Учебники

AWK — рабочий процесс

Чтобы стать опытным программистом на AWK, вам необходимо знать его внутреннее устройство. AWK следует простому рабочему процессу — чтение, выполнение и повторение. Следующая диаграмма изображает рабочий процесс AWK —

AWK Workflow

Читать

AWK читает строку из входного потока (файл, канал или стандартный ввод) и сохраняет ее в памяти.

казнить

Все команды AWK применяются последовательно на входе. По умолчанию AWK выполняет команды в каждой строке. Мы можем ограничить это, предоставляя шаблоны.

Повторение

Этот процесс повторяется, пока файл не достигнет своего конца.

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

Давайте теперь разберемся со структурой программы AWK.

НАЧАЛО блока

Синтаксис блока BEGIN следующий:

Синтаксис

BEGIN {awk-commands}

Блок BEGIN выполняется при запуске программы. Это выполняется только один раз. Это хорошее место для инициализации переменных. BEGIN — это ключевое слово AWK, поэтому оно должно быть в верхнем регистре. Обратите внимание, что этот блок не является обязательным.

Блок кузова

Синтаксис блока тела выглядит следующим образом:

Синтаксис

/pattern/ {awk-commands}

Блок body применяет команды AWK к каждой строке ввода. По умолчанию AWK выполняет команды в каждой строке. Мы можем ограничить это, предоставляя шаблоны. Обратите внимание, что для блока Body нет ключевых слов.

END Block

Синтаксис блока END следующий:

Синтаксис

END {awk-commands}

Блок END выполняется в конце программы. END — это ключевое слово AWK, поэтому оно должно быть в верхнем регистре. Обратите внимание, что этот блок не является обязательным.

Давайте создадим файл marks.txt, который содержит серийный номер, имя учащегося, имя субъекта и количество полученных оценок.

1)  Amit    Physics  80
2)  Rahul   Maths    90
3)  Shyam   Biology  87
4)  Kedar   English  85
5)  Hari    History  89

Давайте теперь отобразим содержимое файла с заголовком, используя скрипт AWK.

пример

[jerry]$ awk 'BEGIN{printf "Sr No\tName\tSub\tMarks\n"} {print}' marks.txt

Когда этот код выполняется, он дает следующий результат —

Выход

Sr No Name Sub Marks
1) Amit Physics 80
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89

В начале AWK печатает заголовок из блока BEGIN. Затем в блоке body он читает строку из файла и выполняет команду печати AWK, которая просто печатает содержимое в стандартном потоке вывода. Этот процесс повторяется, пока файл не достигнет конца.