- •Условная выборка строк
- •Составные шаблоны
- •Примеры.
- •А) Программа
- •Б) Программа
- •Пример.
- •Операторы в awk
- •При выполнении более, чем одного оператора в оператор_1 или в оператор_2 необходимо их
- •Б) Цикл for аналогичен в языке Си, но отличается от цикла в языке
- •В) Цикл while
- •Е) Опереатор next вызывает чтение следующей входной строки и сопоставление ее с шаблонами
- •Пример:
- •Дополнительные переменные
- •Пример.
- •FLENGTH - хранит значение длины строки сопоставления, производимого
- •ENVIRON - массив, содержащий значения текущих переменных окружения.
- •CONVFMT - формат преобразования чисел. Ее значение по умолчанию - %6g.
- •Если она определена, то считается, что
- •Значения переменной FIELDWIDTHS – числа, разделенные пробелами или табуляцией, поэтому поля не обязательно
- •Проблема в следующем. Как отделить признак “пола” от фамилии?
- •Здесь 1 – первое поле длиною 1;
- •IGNORECASE - управляет зависимостью регулярного выражения от регистра.
- •Взаимодействие с интерпретатором
- •Пример 1.
- •Способ 2.
- •Язык awk может явно предоставлять возможность выбора полей. Hаша задача - передать номер
- •Пример 3.
- •Здесь шаблон BEGIN используется для засылки значения в переменную N, чтобы не засорять
- •Здесь нет никаких возможностей
- •Функции
- •Список аргументов идет через запятые. Это переменные, что используются внутри функции.
- •Параметры функции передаются по значению, то есть действительные
- •Результат будет: 5 5
- •Локальные переменные
- •Глобальные переменные
- •Обращение к функциям
- •Для этого необходимо выполнить: system (value)
- •Тогда программа на awk будет иметь вид:
- •CGI программирование с применением shell и awk
- ••методы:
- •Пример 1.
- •echo “It is now `date`”
- •Пример 2.
- •Здесь:
- •Примеры:
- •Для метода GET наиболее важна переменная QUERY_STRING, содержащая в
- •Для распознавания метода передачи
- •Но в силу того, что браузер передает информацию из формы в закодированном виде,
- •Пример:
Здесь шаблон BEGIN используется для засылки значения в переменную N, чтобы не засорять конец программы кавычками.
Основная трудность во всех этих примерах состоит не в том, что бы следить
за кавычками ( хотя это дело очень хлопотливое), а в том, что программы,
составленные таким образом, могут читать только свой стандартный входной поток.
31
Здесь нет никаких возможностей
передать им сразу и параметр N и произвольно длинный список имен
файлов.
Для этого необходима определенная техника программирования на языке shell.
32
Функции
Функции могут использоваться в любом месте, где может применяться оператор- действие.
Функции имеют свободный формат, но должны разделяться точками с запятой или символами новой строки.
Синтаксис определения функции следующий:
function Имя(Список_аргументов) {Тело функции}
При объявлении функции в этой части
Имя(Список нет пробела.
33
Список аргументов идет через запятые. Это переменные, что используются внутри функции.
Тело функции – это один или несколько операторов-действия.
Функции вызываются из обычного оператора- действия.
ВНИМАНИЕ!
Левая скобка в списке параметров при определении и при обращении должна быть непосредственно за именем функции. (Для встроенных функций это
может быть не так). 34
Параметры функции передаются по значению, то есть действительные
параметры копируются и передаются формальным параметрам.
Пример. |
|
|
Cat > is.awk |
|
|
function is(x) |
{ x=8 } |
|
{ |
x=5; |
print x; |
|
is(x); |
print x; |
} |
|
|
awk –f is.awk |
|
35
Результат будет: 5 5
Это происходит потому, что вызов функции is(x) копирует значение в локальную переменную внутри самой функции.
Начальное значение равно 5 и оно не переопределяется значением 8.
Но если оператор поставить внутри функции, то будет напечатано и значение 8.
36
Локальные переменные
Им не уделено особого внимания в awk. Поэтому они должны быть перечислены в списке параметров.
Список локальных переменных
отделяется от параметров пробелом. Например:
function is(x A,B)
Здесь x - параметр подпрограммы, а A и B локальные переменные. Они существуют и имеют смысл до тех пор, пока функция is активна.
37
Глобальные переменные
Любая переменная, что не входит в список параметров, является глобальной.
Пример:
function is(x) {x=8; a=3}
{x=5; a=2; print “x= “ x “a = “ a; is(x); print “x= “ x “a = “ a;
}
При этом будет выдано: x= 5 a = 2
x= 5 a = 3
38
Обращение к функциям
-Функции могут вызывать друг друга.
-Обращение к функции может быть
рекурсивным.
В некоторых версиях awk можно использовать слово func вместо function.
Встроенная функция system
Эта функция позволяет использовать команды UNIX и shell.
39
Для этого необходимо выполнить: system (value)
где value – строка, что будет вводиться из
командной строки UNIX. Текст должен быть в двойных кавычках. Переменные должны идти через пробел для конкатенации.
Пример:
Файл file.me содержит: file.1
file.2
file.3
40