Linux и UNIX: программирование в shell. Руководство разработчика
вернуться

Тейнсли Дэвид

Шрифт:

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

• создание шаблонов для поиска выражений, стоящих в начале или в конце строки;

• создание шаблонов для поиска символов, встречающихся неопределенное число раз;

• создание шаблонов для поиска специальных символов;

• создание шаблонов для поиска символов из указанного набора или диапазона;

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

Регулярные выражения можно применять для фильтрации текстовых файлов или выходных данных команды либо сценария. Они представляют собой набор шаблонов, состоящих как из специальных, так и обычных символов.

Регулярные выражения в той или иной форме используются всеми основными текстовыми редакторами и утилитами, выполняющими фильтрацию текста. К сожалению, наборы поддерживаемых выражений несколько различаются от программы к программе, но существуют так называемые базовые регулярные выражения, которые во всех программах обрабатываются одинаково. Именно их мы и рассмотрим в настоящей главе. Единственное исключение -oператор \{ \}, который поддерживается в программах sed и grep, но не в awk.

В табл. 7.1 перечислены метасимволы и операторы, применяемые в базовых регулярных выражениях.

Таблица 7.1. Метасимволы и операторы базовых регулярных выражений

^

Соответствует началу строки

$

Соответствует концу строки

[]

Соответствует любому символу из числа заключенных в скобки; чтобы задать диапазон символов, укажите первый символ диапазона, дефис и последний символ (например, вместо шаблона [12345] можно ввести

[1-5])

[^]

Соответствует любому символу, кроме тех, что указаны в скобках

\

Отменяет специальное значение следующего за ним метасимвола

.

Соответствует любому отдельному символу

*

Указывает на то, что предыдущий шаблон встречается ноль или более раз; в программах awk и egrep, где испольуются расширенные регулярные выражения, существует два дополнительных оператора:

? (означает, что предыдущий шаблон встречается не более одного раза) и

+ (означает, что предыдущий шаблон встречается один или более раз)

\{n\}

Указывает на то, что предыдущий шаблон встречается ровно n раз

\{n,\}

Указывает на то, что предыдущий шаблон встречается не менее п раз

\{,m\}

Указывает на то, что предыдущий шаблон встречается не более т раз

\{n, m\}

Указывает на то, что предыдущий шаблон встречается не менее n раз и не более т раз

7.1. Поиск одиночных символов с помощью метасимвола '.'

Метасимвол '.' соответствует любому одиночному символу. Если, например, требуется найти слово, начинающееся с подстроки "beg", после которой стоит произвольный символ, а за ним -cимвол 'n', задайте шаблон beg.n. Будут найдены такие слова, как "begin", "began" и т. д.

Данный метасимвол удобно применять при фильтрации результатов работы команды ls -l для поиска файлов, имеющих требуемые права доступа. Следующий шаблон соответствует файлам, выполнять которые могут все пользователи:

…x..x..x

Вот примеры отбора строк режима по этому шаблону:

drwxrwxrw- — не соответствует

– rw-rw-rw- — не соответствует

– rwxrwxr-x -cоответствует

– rwxr-xr-x -cоответствует

Предположим, выполняется фильтрация текстового файла. Необходимо найти в нем строки, состоящие из десяти символов, из которых пятый и шестой — "ХС". Данная задача решается с помощью такого шаблона:

….ХС….

Он означает, что первые четыре символа могут быть произвольными, следующие два — "ХС", а последние четыре — тоже произвольные. Вот несколько примеров сравнения:

1234ХС9088 -cоответствует

4523ХХ9001 — не соответствует

0011ХА9912 — не соответствует

9931ХС3445 -cоответствует

7.2. Поиск выражений в начале строки с помощью метасимвола '^'

Метасимвол '^' позволяет искать слова или символы, стоящие в начале строки. Например, благодаря шаблону ^d можно отобрать из списка, выводимого командой ls -l, только те записи, которые соответствуют каталогам:

drwxrwxrw- - соответствует

  • Читать дальше
  • 1
  • ...
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • ...

Private-Bookers - русскоязычная библиотека для чтения онлайн. Здесь удобно открывать книги с телефона и ПК, возвращаться к сохраненной странице и держать любимые произведения под рукой. Материалы добавляются пользователями; если считаете, что ваши права нарушены, воспользуйтесь формой обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • help@private-bookers.win