B.2. Awk
Awk -- это полноценный язык обработки
текстовой информации с синтаксисом, напоминающим синтаксис языка
C. Он обладает довольно широким набором
возможностей, однако, мы рассмотрим лишь некоторые из них --
наиболее употребимые в сценариях командной оболочки.
Awk "разбивает" каждую строку на отдельные поля. По-умолчанию, поля -- это
последовательности символов, отделенные друг от друга пробелами, однако имеется
возможность назначения других символов, в качестве разделителя
полей. Awk анализирует и обрабатывает каждое поле в отдельности.
Это делает его идеальным инструментом для работы со
структурированными текстовыми файлами, осбенно с таблицами.
Внутри сценариев командной оболочки, код awk, заключается в
"строгие" (одиночные) кавычки и фигурные скобки.
awk '{print $3}' $filename
# Выводит содержимое 3-го поля из файла $filename на устройство stdout.
awk '{print $1 $5 $6}' $filename
# Выводит содержимое 1-го, 5-го и 6-го полей из файла $filename.
Только что, мы рассмотрели действие команды print. Еще, на чем мы остановимся --
это переменные. Awk работает с переменными подобно сценариям
командной оболочки, но более гибко.
{ total += ${column_number} }
Эта команда добавит содержимое переменной
column_number к переменной
"total". Чтобы, в завершение
вывести
"total", можно использовать
команду
END, которая открывает блок кода,
отрабатывающий после того, как будут обработаны все входные
данные.
END { print total }
Команде END, соответствует команда BEGIN, которая открывает блок кода,
отрабатывающий перед началом обработки входных данных.
Примеры использования awk в сценариях командной оболочки, вы
найдете в:
-
Пример 11-10
-
Пример 16-7
-
Пример 12-24
-
Пример 33-3
-
Пример 9-22
-
Пример 11-16
-
Пример 27-1
-
Пример 27-2
-
Пример 10-3
-
Пример 12-42
-
Пример 9-26
-
Пример 12-3
-
Пример 9-12
-
Пример 33-11
-
Пример 10-8
Это все, что я хотел рассказать об awk. Дополнительные ссылки
на информацию об awk, вы найдете в разделе Литература.