Онлайн-рабочие станции OnWorks Linux и Windows

Логотип

Бесплатный хостинг в Интернете для рабочих станций

<Предыдущая | Содержание: | Следующая>

перемежаемость

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

Для демонстрации мы будем использовать GREP в сочетании с эхо. Во-первых, давайте попробуем сопоставить простую старую строку:



[я @ linuxbox ~] $ эхо "ААА" | grep AAA

AAA

[я @ linuxbox ~] $ эхо "BBB" | grep AAA

[я @ linuxbox ~] $

[я @ linuxbox ~] $ эхо "ААА" | grep AAA

AAA

[я @ linuxbox ~] $ эхо "BBB" | grep AAA

[я @ linuxbox ~] $


Довольно простой пример, в котором мы передаем вывод эхо в GREP и посмотрите результаты. Когда происходит совпадение, мы видим его распечатанным; когда совпадений нет, мы не видим результатов.

Теперь мы добавим чередование, обозначенное метасимволом вертикальной черты:



[я @ linuxbox ~] $ эхо "ААА" | grep -E 'AAA | BBB'

AAA

[я @ linuxbox ~] $ эхо "BBB" | grep -E 'AAA | BBB'

BBB

[я @ linuxbox ~] $ эхо "CCC" | grep -E 'AAA | BBB'

[я @ linuxbox ~] $

[я @ linuxbox ~] $ эхо "ААА" | grep -E 'AAA | BBB'

AAA

[я @ linuxbox ~] $ эхо "BBB" | grep -E 'AAA | BBB'

BBB

[я @ linuxbox ~] $ эхо "CCC" | grep -E 'AAA | BBB'

[я @ linuxbox ~] $


Здесь мы видим регулярное выражение 'AAA | BBB', что означает «сопоставить либо строку AAA или строка BBB. » Обратите внимание, что, поскольку это расширенная функция, мы добавили -E вариант GREP (хотя мы могли бы просто использовать задать расширенное program вместо этого), и мы заключили регулярное выражение в кавычки, чтобы оболочка не интерпретировала метасимвол вертикальной полосы как оператор канала. Чередование не ограничивается двумя вариантами:



[я @ linuxbox ~] $ эхо "ААА" | grep -E 'AAA | BBB | CCC'

AAA

[я @ linuxbox ~] $ эхо "ААА" | grep -E 'AAA | BBB | CCC'

AAA


Чтобы объединить чередование с другими элементами регулярного выражения, мы можем использовать () для разделения чередования:



[я @ linuxbox ~] $ grep -Eh '^ (bz | gz | zip)' dirlist * .txt

[я @ linuxbox ~] $ grep -Eh '^ (bz | gz | zip)' dirlist * .txt


Это выражение будет соответствовать именам файлов в наших списках, которые начинаются с «bz», «gz» или «zip». Если бы мы не использовали круглые скобки, значение этого регулярного выражения:



[я @ linuxbox ~] $ grep -Eh '^ bz | gz | zip' dirlist * .txt

[я @ linuxbox ~] $ grep -Eh '^ bz | gz | zip' dirlist * .txt


изменяется, чтобы соответствовать любому имени файла, начинающемуся с «bz» или содержит «Gz» или содержит «Застежка-молния».


Лучшие облачные вычисления для ОС в OnWorks: