Компьютерные сети и технологии
Привет
Пользователь:

Пароль:



[ ]
[ ]

В сети
Гостей: 7
Участников: 0
На странице: 1
Участников: 3874, Новичок: ritasovurova

Разное

(Занятие 10) awk - язык сканирования и обработки текста
Операционная система UNIX (руководство пользователя)
на Friday 04 August 2006
от список авторов отправить по email статья печатать статья
в Сетевые Операционные Системы ОС > Linux - Unix



10.7. Шаблоны

В выражении шаблон-действие, шаблон служит для выбора записей, для которых выполняется соответствующее действие.

10.7.1. Шаблоны BEGIN и END

BEGIN используется для получения управления перед считыванием первой вводной строки, так что любое действие для шаблона BEGIN выполняется один раз до того, как команда awk начинает считывать первую запись. END используется для получения управления после считывания последней вводной строки.

Следующая awk-программа использует BEGIN для установки в качестве разделителя символа табуляции (\t) и создания заголовков в выводном файле. Поле-разделитель хранится во встроенной переменной FS. Хотя FS может быть восстановлено в любом месте, благоразумнее поместить в секции BEGIN, до того как вводной файл начнет считываться. Второй printf в программе выполняется для каждой вводной строки и формирует выводной файл в виде таблицы, где вся информация располагается по колонкам с заголовками. END печатает результат. (Обратите внимание, что длинная строка может быть продолжена на другой строке после запятой).

       BEGIN 
                printf "%10s %6s %5s   %s\n", $1, $2, $3, $4
                area = area + $2; pop = pop + $3}
       END 

Если в качестве вводного взять файл countries, то получим следующий результат:

          COUNTRY   AREA     POP     CONTINENT
             USSR   8650     262     Asia
           Canada   3852      24     North America
            China   3692     866     Asia
              USA   3615     219     North America
           Brazil   3286     116     South America
        Australia   2968      14     Australia
            India   1269     637     Asia
        Argentina   1072      26     South America
            Sudan    968      19     Africa
          Algeria    920      18     Africa

            TOTAL  30292    2201


10.8. Выражения отношения

В качестве шаблона может использоваться любое выражение, вызывающее сравнение между строками символов или цифр. awk имеет 6 операторов сравнения и два регулярных выражения ~ и !~. В табл. 21 перечислены все операторы и их значение.

Таблица 21
Значения операторов


Оператор Значение
< Меньше чем
<= Меньше или равно
== Равно
!= Не равно
>= Больше или равно
> Больше чем
~ Входит
!~ Не входит


При сравнении, если оба операнда являются цифровыми, то проводится цифровое сравнение; в противном случае - строчное. Например, шаблон:

    $3 > 100

выбирает строки в которых третье поле больше 100, а программа:

    $1 >= "S"

выбирает строки, которые начинаются с буквы S по букву Z:

        USSR    8650    262     Asia
        USA     3615    219     North America
        SUDAN    986     19     Africa

При отсутствии любой другой информации awk трактует поля как строки, так что программа:

    $1 == $4

сравнивает 1-е и 4-е поля как строки символов и для файла countries получим следующий результат:

    Australia 2968 14 Australia




Поиск Компьютерные сети и технологии

Copyright © 2006 - 2020
При использовании материалов сайта ссылка на xnets.ru обязательна!