В данной статье мы рассмотрели мощный набор фильтров. Здесь мы рассмотрим другой инструмент, который является довольно мощным в сочетании с концепцией, называемой регулярными выражениями.
Вступление
Регулярные выражения похожи на шаблоны, которые мы рассмотрели в данной статье. Они позволяют нам создавать шаблоны. Обычно они используются для идентификации и обработки определенных фрагментов данных. Например. мы можем указать каждую строку, содержащую адрес электронной почты или URL-адрес в наборе данных.
egrep
egrep — это команда, которая будет искать данный набор данных и печатать каждую строку, содержащую шаблон. Его название основано на команде, которая выполняла аналогичную функцию в текстовом редакторе с именем ed.
egrep [параметры командной строки] <шаблон> [путь]
Допустим, мы хотели идентифицировать каждую строку, которая содержала строку pulse
Основное поведение egrep заключается в том, что он будет печатать всю строку, которая содержит символы, соответствующие шаблону. Между тем, мы ищем не слово, а строку символов.
Важно понимать, что шаблон заключен в кавычки. Это не всегда требуется, но надежнее все же использовать их. Они необходимы, если ваш шаблон содержит символы, которые имеют особое значение в командной строке.
Иногда мы хотим знать не только какие строки соответствуют, но и их номер строки.
Или, может быть, мы не заинтересованы в том, чтобы видеть совпадающие линии, но хотим знать, сколько строк совпадало.
Регулярные выражения
Лучший способ выучить регулярные выражения — это попробовать самостоятельно на практике. К сожалению, во время обучения часто допускают ошибки в шаблонах.
Если вы не получаете желаемого результата, вот несколько полезных рекомендаций.
- Прежде всего, проверьте на опечатки.
- Разбейте ваш шаблон на отдельные компоненты и протестируйте каждый из них в отдельности. Это поможет вам понять, какие части шаблона являются правильными, а какие необходимо корректировать
Основные блоки регулярных выражений:
- , — один символ.
- ? — предыдущий символ соответствует 0 или 1 разу.
- — предыдущий символ соответствует 0 или более раз.
- + — предшествующий символ соответствует 1 или более раз.
- {n} — предыдущий символ соответствует ровно n раз.
- {n, m} — предыдущий символ соответствует как минимум n раз и не более m раз.
- [agd] — персонаж входит в квадратные скобки.
- [^ agd] — символ не входит в квадратные скобки.
- [cf] — тире в квадратных скобках работает как диапазон. В данном случае это означает буквы c, d, e или f.
- () — позволяет группировать несколько символов, которые ведут себя как один.
- | (символ трубы) — логическая операция ИЛИ.
- ^ — соответствует началу строки.
- $ — соответствует концу строки.