Обычно awk считывает одну строку или запись за один раз. Записью является последовательность символов, заканчивающаяся символом "новая строка". Затем awk разделяет каждую запись на поля. Поле не может быть пустой строкой и символом табуляции.
В качестве ввода для программы awk в этом разделе будем использовать файл countries, который содержит информацию о 10 странах. Каждая запись содержит имя страны, занимаемую площадь в квадратных километрах, ее население в миллионах и континент, на котором она находится. Пустое пространство между колонками является табуляцией при вводе.
USSR 8650 262 Asia
Canada 3852 24 North America
China 3692 866 Asia
USA 3615 219 North America
Brazil 3286 116 South America
Australia 2968 14 Australia
India 1269 637 Asia
Argentina 1072 26 South America
Sudan 968 19 Africa
Algeria 920 18 Africa
Этот файл данных удобен для обработки - смесь слов и цифр, разделенных на поля символами "пробел" и "табуляция".
Число полей в записи определяется полем разделителем. Поля обычно разделяются последовательностью пробелов и/или табуляцией, так что первая запись countries будет иметь 4 поля, вторая - 5 и т.д. Возможно установить разделитель поля точно на символ табуляции, так что каждая строка будет иметь 4 поля, и можно искать значение данных.
При описании по умолчанию будем использовать: поля разделяются табуляцией или пробелами; первое поле в строке обозначается $1, второе - $2 и т.д. Вводная запись обозначается $0.
Если шаблон в выражении шаблон-действие опущен, действие выполняется для всех вводных строк. Простейшим действием является печать каждой строки, вы можете выполнить это с помощью программы awk, состоящей из одного выражения print:
{print}
так что командная строка:
awk '{print}' countries
печатает каждую строку файла countries, направляя вывод в стандартный файл вывода. Действие print может также использоваться для распечатки частей записи. Например:
{print $1, $3}
печатает первое и третье поля каждой записи. Элементы, разделенные в выражении print запятой, разделяются при печати разделителем, которым по умолчанию является один пробел. Каждая напечатанная строка завершается разделителем, которым по умолчанию является символ новой строки.
Примечание. Далее будут показаны текст программы awk, без командной строки. Каждую программу можно запустить, либо заключив ее в кавычки как первый аргумент команды awk, либо поместив ее в файл и вызвать awk с флагом -f.
Для вывода форматированного файла awk обеспечивает Си-подобное выражение printf:
printf format, expr1, expr2, ..., exprn
которое печатает expr в соответствии со спецификацией в строке format. Например, программа awk:
{printf "%10s %6d\n", &1, $3}
печатает первое поле ($1) как строку из 10 символов, затем пробел, третье поле ($3) как десятичное число в «шестисимвольном» поле, затем новая строка (\n).
Если в качестве вводного взять файл countries, то программа напечатает следующую таблицу:
USSR 262 Canada 24 China 866 USA 219 Brazil 116 Australia 14 India 637 Argentina 26 Sudan 19 Algeria 18
printf не проставляет автоматически в выводном файле разделителей. Вы должны создать их сами, указав "\n" в формате спецификации.