Учебное пособие по регулярным выражениям в Linux: пример регулярного выражения Grep
⚡ Умное резюме
Регулярные выражения Linux — это специальные последовательности символов, которые используются для поиска данных и сопоставления сложных шаблонов в таких инструментах, как grep, sed и vi, с применением базовых, интервальных, расширенных и фигурных скобок для точной фильтрации текста.

Регулярные выражения — одна из самых мощных функций Linux Инструменты для работы с текстом, позволяющие сопоставлять, фильтровать и преобразовывать данные с помощью компактных шаблонов. На этой странице объясняются базовая, интервальная и расширенная формы, а также расширение скобок, с примерами работы с grep.
Что такое регулярные выражения Linux?
Регулярные выражения Linux — это специальные символы, которые помогают искать данные и сопоставлять сложные шаблоны. Регулярные выражения сокращенно называются «regexp» или «regex». Они используются во многих программах Linux, таких как... GREP, bash, rename, sed и многое другое.
Типы регулярных выражений
Для удобства понимания давайте рассмотрим различные типы регулярных выражений по очереди. На этой странице рассматриваются базовые, интервальные и расширенные регулярные выражения, а завершается она объяснением в фигурных скобках.
Основные регулярные выражения
К числу часто используемых команд для работы с регулярными выражениями относятся tr, sed, viи grep. В таблице ниже перечислены некоторые основные регулярные выражения.
| Символ | Описание |
|---|---|
| . | Заменяет любой символ |
| ^ | Соответствует началу строки |
| $ | Соответствует концу строки |
| * | Совпадает с предыдущим символом ноль или более раз. |
| \ | Представляет особые символы |
| () | Группирует регулярные выражения |
| ? | Совпадает ровно с одним символом |
Рассмотрим пример. Сначала запустите команду `cat sample`, чтобы отобразить содержимое существующего файла, как показано ниже.
Далее выполните поиск содержимого, содержащего букву «а». На скриншоте ниже показано, как команда grep возвращает все строки, содержащие букву «а».
Символ "^" указывает на начало строки. В приведенном ниже примере выполняется поиск содержимого, начинающегося с буквы "a".
Фильтруются только строки, начинающиеся с этого символа. Строки, не содержащие символ «а» в начале, игнорируются.
Рассмотрим другой пример. На скриншоте ниже снова показано содержимое файла до фильтрации по концу строки.
Выделите только те строки, которые заканчиваются буквой «t», используя символ привязки «$», как показано ниже.
Интервальные регулярные выражения
Эти выражения указывают количество вхождений символа в строку. Они перечислены ниже.
| Выражение | Описание |
|---|---|
| {п} | Соответствует предыдущему символу, встречающемуся ровно n раз. |
| {n, m} | Соответствует предыдущему символу, встречающемуся n раз, но не более m. |
| {н, } | Соответствует предыдущему символу только тогда, когда он появляется n раз или более. |
Например, отфильтруйте все строки, содержащие символ 'p'. На скриншоте ниже показаны соответствующие строки.
Теперь проверьте, что символ 'p' встречается в строке ровно два раза подряд. Синтаксис для этого следующий:
cat sample | grep -E p\{2}
Результаты матча в перерыве показаны ниже.
Примечание. К этим регулярным выражениям необходимо добавить -E.
Расширенные регулярные выражения
Эти регулярные выражения объединяют более одного выражения. Некоторые из них:
| Выражение | Описание |
|---|---|
| \+ | Соответствует одному или нескольким вхождениям предыдущего символа |
| \? | Соответствует нулю или одному вхождению предыдущего символа |
Например, выполните поиск всех вхождений символа «t». На скриншоте ниже показан результат.
Предположим, вы хотите отфильтровать строки, в которых символ 'a' предшествует символу 't'. Вы можете использовать команду, подобную приведенной ниже:
cat sample|grep "a\+t"
Результат показан на следующем скриншоте.
Расширение скобки
Синтаксис для расширения фигурных скобок представляет собой либо последовательность, либо список элементов, разделенных запятыми, внутри фигурных скобок '{}'. Начальный и конечный элементы последовательности разделяются двумя точками '..'.
Некоторые примеры приведены ниже.
В приведенных выше примерах команда echo создает строки с помощью расширения фигурных скобок, производя несколько строк из одного шаблона.










