Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
символы в SHELL.docx
Скачиваний:
3
Добавлен:
22.11.2018
Размер:
61.51 Кб
Скачать

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

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

Регулярные выражения интерпретатора awk

Простейшим регулярным выражением является строка символов, обрамленная знаками "/". Например:

/Asia/

Эта означает все записи, которые содержат подстроку Asia (например, запись, содержащая Asia как часть длинной строки, подобной Asian или Pan-Asiatic).

Чтобы ограничить поиск следует использовать операторы ~(входит) и !~(не входит).

~/Asia/

ищет подстроку Asia, в то время как программа:

!~/Asia/

ищет подстроку в которой не содержится Asia.

В регулярном выражении могут использоваться метасимволы:

Символ

Описание

^

указывает на начало строки (~ /^awk/ означает «начинается на awk»)

$

указывает на конец строки (~ /awk$/ означает «заканчивается на awk»)

.

указывает на любой символ, кроме начала новой строки (~ /.wk/ может соответствовать «awk» но не «wk»)

[]

соответствует любому из указаных в квадратных скобках символу. Если первый символ внутри скобок ^ то берутся символы НЕ указанные в квадратных скобках. Вместо перечисления символов может быть указан диапазон (например «a-c»).

*

Любая подстрока или её отсутствие

?

Любой символ или его отсутствие

|

разделяет альтернативы

()

групирует символы (~ /(awk|Shell)/ означает либо «awk», либо «Shell»)

+

означает что предыдущий символ или группа может повториться несколько раз (~ /(awk)+/ означает либо «awk», либо «awkawk», либо «awkawkawk» и т. д.)

\

отменяет специальное значение символа, превращая его из метасимвола в обычный (~ /\^awk/ означает именно подстроку «^awk»)

Например:

/^.$/

просматривает записи для поиска записи, состоящей из одного символа.

/[a-zA-Z]/

поиск любой английской буквы

/^[0-9]+$/

Состоит только из цифр

 

В дополнение к распознаваемым метасимволам, awk распознает следующие последовательности языка программирования Си внутри регулярных выражений и строк:

\b – возврат

\f – перевод формата

\n – новая строка

\r – возврат каретки

\t – табуляция

\ddd – восьмиричное значение

\" – кавычки

c – любой метасимвол

\c – с

Например, выражение

/\t/

Означает поиск табуляции

Предположим, что нужно найти строку символов, подобную ^[0-9]+$. Если строка "^[0-9]+$" используется как регулярное выражение, появляются дополнительные знаки "\", которые защищают регулярное выражение. Это связано с тем, что первый уровень знаков "\" удаляется при синтаксическом анализе строки. Первый уровень "\" перед символом возвращает его специальное значение в регулярном выражении, второй нужен, чтобы защитить его в строке.

Например, нужно найти строки, содержащие "b" и следующий за ним знак "$". Регулярное выражение для этого шаблона:

b\$

Чтобы создать строку для представления этого регулярного выражения, необходимо добавить еще один символ "\":

 

"b\\$"

Следующие регулярные выражения попарно эквивалентны:

x ~ "b\\$"

x ~ /b\$/

x ~ "b\$"

x ~ /b$/

x ~ "b$"

x ~ /b$/

x ~ \\t

x ~ /\t/