Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Компьютерные сети / Комп сети 6_awk.ppt
Скачиваний:
16
Добавлен:
22.02.2016
Размер:
168.96 Кб
Скачать

В) Цикл while

while ( условие ) { операторы }

Г) Оператор break вызывает немедленный выход из цикла while или for.

Д) Оператор continue инициирует переход к следующему шагу цикла

(к условию в операторе while или

к выражению_2 в опереторе for).

11

Е) Опереатор next вызывает чтение следующей входной строки и сопоставление ее с шаблонами в начале программы awk.

Ж) Оператор exit [статус] вызывает

немедленный переход на действия, определенные в шаблоне END.

Если шаблона END нет или в нем есть exit, то сценарий заканчивается сразу.

Если оператор exit применен без параметра, то он заканчивает программу со

значением статуса, равным нулю, иначе – со значением вычисленного выражения параметра. Значение статуса присваивается

встроенной переменной $?.

12

Пример:

Вывести поля файла file1.me в обратном порядке.

awk ‘{for (i=NF; i>0; --i); print $i}’ file1.me

Пример:

Вывести все строки файла file2.me, находящиеся между парами start,stop.

awk ‘/start/,/stop/’ file2.me

13

Дополнительные переменные

ARGC - количество аргументов командной строки.

ARGV - массив, содержащий аргументы командной строки.

Индексы идут от 0 до ARGC – 1.

ARGV [0] – это всегда команда awk. Доступные опции UNIX не занимают массив ARGV.

FNR - номер текущей записи внутри файла ввода. Причем FNR <= NR.

Другими словами FNR ведет учет номера записи только текущего файла, а NR

номера строки всех файлов.

14

 

Пример.

Пусть файл File.1 содержит три строки-записи, а файл File.2– две.

Тогда команда

awk’{print FNR NR}’ File.1 File.2

выведет следующие строки:

1

1

2

2

3

3

1

4

2

5

15

FLENGTH - хранит значение длины строки сопоставления, производимого

функцией match().

FSTART - хранит значение начала строки сопоставления, производимого

функцией match(). По значениям FLENGTH и FSTART можно определить, что именно сопоставлялось.

SUBSEP - значение разделителя сценариев. По умолчанию хранит символ

двойных кавычек 0348, что эквивалентно 2810

или 16.

16

 

ENVIRON - массив, содержащий значения текущих переменных окружения.

Индексы массива – это имена самих переменных, а элементы массива – это значения этих переменных. Для

выделения названий и их значений удобно иcпользовать цикл for .. in.

Пример. Программа вывода листинга программ с номерами строк, если vi используется в качестве редактора по умолчанию.

ENVIRON[EDIDOR] == “vi” {print NR, $0};

17

CONVFMT - формат преобразования чисел. Ее значение по умолчанию - %6g.

Эта переменная обычно используется только для внутреннего применения.

FIELDWIDTHS - переменная представляет возможность работы программисту с

полями фиксированной ширины, не привязываясь к отдельным символам разделителя полей.

18

Если она определена, то считается, что

все поля имеют фиксированную ширину. В этом случае запись ввода разделяется с

использованием значений ширины поля, определенных в переменной FIELDWIDTHS.

При этом значение переменной FS не учитывается. Но в случае присваивания переменной FS нового значения, эта

переменная отменяет использование переменной FIELDWIDTHS, и она

восстанавливает значение по умолчанию.

19

Значения переменной FIELDWIDTHS – числа, разделенные пробелами или табуляцией, поэтому поля не обязательно должны быть одинаковой ширины.

Пример.

В файле file.me первый символ обозначает “пол” человека. 0 - женщина, 1 – мужчина. Последний столбец - возраст служащих.

1Petrov, Ivan 24

 

1Ivanov, Petr 26

 

0Silina, Lina 25

20

Соседние файлы в папке Компьютерные сети