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

Условная выборка строк

Операторы-шаблоны, используемые для выбора строк, позволяют решать, какие строки обрабатывать, а какие - игнорировать.

Пример.

Вывести все автомобили, цены которых больше 3000$.

awk '$3 > 3000

{print $0}' cars.file

Оператор-действие выводит на экран все найденные автомобили

Оператор-шаблон выбирает строки, в

которых цены больше 3000.

1

Составные шаблоны

Для конструирования составных шаблонов можно использовать логические

операции и круглые скобки.

В этом случае могут применяться следующие символы:

~ - искать по образцу; // - для обозначения шаблона;

&&- логическая операция «И»;

II - логическая операция «ИЛИ»;

!- логическая операция «Отрицание»2.

Примеры.

(NF < 3) || (NF > 4)

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

Шаблон

/^[a-d].*/

эквивалентен шаблону /^a.*/ || /^b.*/ ||/^c.*/

||/^d.*/

С помощью этого шаблона отыскиваются

все строки, начинающиеся с символов a, b, c и d.

3

Внимание! Шаблон диапазона $1==2, $1==5

отличен от составного шаблона $1>=2 && $1<=5

Пример. Файл file.me содержит строки:

1

0

4

2

3

1

5

2

4

1

1

0

5

1

5

3

7

0

6

4

4

А) Программа

awk ‘$1==3, $1==5’ file.me

выдаст результат:

2

1

4

1

5

1

5

Б) Программа

awk ‘$1>=3 && $1<=5’ file.me

выдаст результат:

2

1

4

1

5

1

4

2

5

2

5

3

6

Пример.

Вывести марки всех автомобилей фирмы "Ford", цены которых находятся в пределах от 8000$ до 15000$ включительно.

cat > diapaz.car

$1~/Ford/ && $3>=8000 && $3<=15000 {print $0} Ctrl-D

awk –f diapaz.car cars.file

7

Операторы в awk

Впрограмме awk возможно применение некоторых сложных операторов.

Восновном они совпадают с языком Си и shell.

А) Оператор if - такой же, как и в Си

1. if (условие) оператор_1; [else оператор_2]

Если оператор_1 и оператор else находятся в одной строке, то они обязательно отделяются друг от друга символом “точка с запятой”.

8

При выполнении более, чем одного оператора в оператор_1 или в оператор_2 необходимо их заключать в фигурные скобки.

2.Условие ? оператор_1 : оператор_2

Если условие истинно, то выполняется оператор_1, иначе оператор_2.

Данный оператор удобен для вывода сообщений об ошибках.

9

Б) Цикл for аналогичен в языке Си, но отличается от цикла в языке shell:

1.for ( выражение_1; условие; выражение_2 )

{операторы}

2. for (Var in Array) {операторы}

Во втором варианте оператора for

переменная Var пробегает по индексам массива Array.

10

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