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

Некоторые версии awk требуют, чтобы шаблон BEGIN был первым шаблоном программы, а шаблон END = последним

(в Linux не так).

B. Выражение “Шаблон_1, Шаблон_2” (шаблон диапазонов)

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

Например, выражение

NR == 10, NR == 20

32

задает строки от 10-ой до 20-ой

включительно, то есть, выбираются строки,

начиная с первого соответствия первому

шаблону, до строки, соответствующей

первому соответствию второму шаблону.

Если второй шаблон не обнаруживается, то все остальные записи считаются соответствующими шаблону.

33

Например, в файле file.me находятся строки:

1

2

3

7

9

10

Тогда программа

awk '$1 == 3,$1 == 10' file.me

выведет строки:

34

3

7

9

10

Внимание!

Шаблоны диапазона не могут быть частями сложных шаблонов.

35

Если выражение арифметическое, то

соответствие будет иметь место в том случае, если результат будет ненулевым числом.

Если шаблон строка, то соответствие имеет место, если выражение не является нулевой строкой.

Например, шаблон $1 <= $2

может вызывать как численное, так и строковое сравнение в зависимости от содержимого полей записи.

36

C. Использование арифметических

операторов

Достоинством программы awk является ее возможность попутно с операциями над текстом проводить вычисления над входными потоками данных: что-нибудь подсчитать, вычислить суммы и средние величины и тому подобное.

Например, попытаемся определить среднюю цену всех автомобилей. Для этого используем:

37

-переменную SUM, введенную пользователем;

-переменную команды awk, называемую

NR (число записей или строк, считанных командой awk);

- оператор команды awk, называемый END. Этот оператор предписывает команде awk ожидать, пока не будут считаны все записи, а затем выполнить следующие действия.

38

cat > aw.price

Создание файла aw.price

{SUM = SUM + $3}

Суммирование всех цен

END

Ожидание считывания всех записей

{print "Aver price: ", SUM/NR} CTRL-D

Вычисление средней цены

 

awk -f aw.price cars.file

 

Выполнение команды awk с опцией -f.

 

Average price: 3875.34

 

Выведенный результат

39

В этих всех примерах использование опции -f эквивалентно набору операторов в командной строке для получения результата.

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

По умолчанию все переменные инициируются нулем, так что не надо

беспокоиться об их инициализации.

40

Встроенные переменные awk

FILENAME

-

имя текущего входного

 

 

 

файла,

FS

-

символ разделения

полей

( по умолчанию приняты

символы "Пробел" и "Табуляция"),

RS - символ разделения входных строк ( по умолчанию принят

символ перевода строки),

 

NF

-

число полей входной

 

 

 

строки,

 

NR

-

номер текущей входной

 

 

 

записи (FNR),

41

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