Искусство программирования на языке сценариев командной оболочки


Программирование на языке сценариев командной оболочки - стр. 223


This is the only instance of line 2.

  • Дополнительные метасимволы. Использующиеся при работе с egrep, awk и Perl

  • Знак вопроса -- ? -- означает, что предыдущий символ или регулярное выражение встречается 0 или 1 раз. В основном используется для поиска одиночных символов.

  • Знак "плюс" -- + -- указывает на то, что предыдущий символ или выражение встречается 1 или более раз. Играет ту же роль, что и символ "звездочка" (*), за исключением случая нулевого количества вхождений.

    # GNU версии sed и awk допускают использование "+", # но его необходимо экранировать.

    echo a111b | sed -ne '/a1\+b/p' echo a111b | grep 'a1\+b' echo a111b | gawk '/a1+b/' # Все три варианта эквивалентны.

    # Спасибо S.C.

  • Экранированные "фигурные скобки" -- \{ \} -- задают число вхождений предыдущего выражения.

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

    Выражение "[0-9]\{5\}" -- в точности соответствует подстроке из пяти десятичных цифр (символов из диапазона от 0 до 9, включительно).

    В "классической" (не совместимой с POSIX) версии awk, фигурные скобки не могут быть использованы. Однако, в gawk предусмотрен ключ --re-interval, который позволяет использовать (неэкранированные) фигурные скобки.

    bash$ echo 2222 | gawk --re-interval '/2{3}/'

    2222

    Язык программирования Perl и некоторые версии egrep не требуют экранирования фигурных скобок.

  • Круглые скобки -- ( ) -- предназначены для выделения групп регулярных выражений. Они полезны при использовании с оператором "|" и при извлечении подстроки с помощью команды expr.

  • Вертикальная черта -- | -- выполняет роль логического оператора "ИЛИ" в регулярных выражениях и служит для задания набора альтернатив.

    bash$ egrep 're(a|e)d' misc.txt

    People who read seem to be better informed than those who do not.


    - Начало -  - Назад -  - Вперед -