Операционная система UNIX. Руководство программиста

     

Функции


В awk'е имеется ряд встроенных функций, реализующих часто используемые арифметические операции и операции над цепочками символов. Ниже перечислены арифметические операции:

exp (выражение) int (выражение) log (выражение) sqrt (выражение)

Арифметические функции (exp, int, log, sqrt) вычисляют, соответственно, экспоненту, целую часть, натуральный логарифм и квадратный корень числового значения выражения. (выражение) может быть опущено, в таком случае функция применяется к $0. Предпочтительным считается числовое значение арифметической функции.

Операции над цепочками символов:

getline index (выражение1, выражение2) length length (выражение) split (выражение, идентификатор, выражение2) split (выражение, идентификатор) sprintf (формат, выражение1, выражение2 ...) substr (выражение1, выражение2) substr (выражение1, выражение2, выражение3)

Выполнение функции getline приводит к тому, что текущая входная запись заменяется на следующую входную запись. Функция возвращает 1, если следующая входная запись существует, и 0, если ее нет. Значение переменной NR обновляется.

Функция index (e1, e2) по текстовым значениям выражений e1 и e2

находит первое вхождение цепочки e2 в e1 и возвращает номер начальной позиции. Если e2 не входит в e1, функция index возвращает 0. Пример:

index ("abc", "bc") = 2 index ("abc", "ac") = 0

Функция length без аргументов возвращает число символов в текущей входной записи. Если указан аргумент-выражение, length (e)

возвращает число символов в текстовом значении e. Пример:

length ("abc") = 3 length (17) = 2

Функция split (e, array, sep) разбивает текстовое значение выражения e на поля, которые помещаются затем в array[1], array[2], ... array[n]; в качестве разделителя полей используется текстовое значение аргумента sep. Результат, возвращаемый функцией, равен числу обнаруженных полей. Если третий аргумент опущен, функция split в качестве разделителя полей использует текущее значение FS. Например, после обращения


n = split ($0, a)

a[1], a[2], ... a[n] - это та же самая последовательность, что и $1, $2, ... $NF.

Функция sprintf (f, e1, e2, ...) преобразует текстовые значения выражений e1, e2, ... в соответствии с форматом, специфицированным текстовым значением выражения f. Соглашения об управлении форматом такие же, как и для функции printf(3S) в языке программирования C (исключение: не допускается использование символа * для обозначения ширины поля или точности).

Функция substr (string, pos) возвращает окончание цепочки символов string, начиная с позиции pos. Функция substr (string, pos, length) возвращает подцепочку аргумента string, начинающуюся с позиции pos и имеющую длину length. Если длина pos+length

больше, чем длина аргумента string, то оба варианта substr эквивалентны. Пример:

substr ("abc", 2, 1) = "b" substr ("abc", 2, 2) = "bc" substr ("abc", 2, 3) = "bc"

Значения аргумента pos, меньшие 1, принимаются равными 1. Отрицательное или нулевое значение аргумента length приводит к пустому результату. Предпочтительным для функций sprintf и substr

является текстовое значение. Предпочтительное значение остальных функций - числовое.




Содержание раздела