Язык обработки данных AWK

Оглавление

2. Образцы /patterns/

2.1 Регулярное выражение

Для осуществление поиска в AWK языке допускается использование регулярных выражений, определенных в описании SED, (см. ``Неинтерактивный текстовый редактор SED'' 2.1), заключенных в``/ /''. Дополнения к использованию регулярных выражений, допускаемые в AWK-языке:

  • "( )" - Скобки допускаются для группирования;
  • " |" - Указание альтернативы "или";
  • " + " - Плюс, стоящий за регулярным выражением означает любую последовательность вхождений этого выражения, начиная с 1;
  • " ? " - Знак вопроса за регулярным выражением означает 0 или 1 вхождений этого выражения;
  • [A-Z] - Допускается сокращенная форма записи для рангов ASCII символов;
  • Установленный порядок выполнения операторов на одном скобочном уровне: "[] * + ? конкатенация |".

Например:

/Olga/ - Указывает на строки, содержащие Olga.

/[Oo]lga|[Mm]ike|[Mm]al/ - Указывает на строки, содержащие Olga или olga или Mike или mike или Mal или mal.

/number[0-9]/ - Указывает на строки, содержащие number0 или number1 или ... number9.

/\/.+\// - Указывает на строки, содержащие любое количество символов, больше или равное 1, заключенных в / /.

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

В начало страницы

Выражение отношение может быть двух типов:
  • < Выражение> < Принадлежность> < Выражение>
  • < Выражение> < Лог. Операция> < Выражение>

Принадлежность:

~ - Содержится;

!~ - Не содержится.

Лог. Операция: < , < =, ==, !=, > =, > .

Например:

$1 ~ /[Oo]lga/ - Указывает на строки, первое поле которых содержит Olga или olga.

$1 > = "s" - Указывает на строки, начинающиеся с символа s или следующих за ним по порядку: t, u, v...

2.3 Комбинация образцов

В начало страницы

Допускается логическая комбинация образцов с использованием следующих знаков: || - ``или'', & & - ``и'', ! - ``не''.

Последовательности образцов, соединенных одним из знаков читаются слева направо.

Комбинация: ``образец1, образец2'' указывает, что действие выполняется над строками, попадающими в указанный ранг: то есть, начиная от строки, удовлетворяющей ``образец1" и вплоть до строки, удовлетворяющей ``образец2", включая ее саму.

Например:

/02\.95/ & & ($1 !~ /\.su/ $2 !~ /\.su/) - Указывает на строки, содержащие 02.95 и не имеющие .su одновременно в первом и во втором поле.

NR == 100, NR == 200 - Указывает строки с номерами от 100 до 200.

2.4 BEGIN и END

В начало страницы

Образец BEGIN указывает на начало input или на те действия, которые должны быть выполнены до какого бы то ни было анализа строк. Образец END указывает на конец input или на те действия, которые должны быть выполнены после обработки всех строк.

Например:

BEGIN {FS = ":"} - Устанавливает разделитель полей в ":" до начала обработки строк. Эквивалентно опции "-F:" при AWK вызове.

END { print NR } - Печатает номер последней строки input, т.е. количество обработанных входных строк.


<<< Оглавление Страница: 2  3 >>>