Расширенный grep с регулярными выражениями
Применяйте сложные шаблоны регулярных выражений с «grep» для точного и эффективного поиска текста в файлах.
«Расширенный grep с регулярными выражениями» — бесплатный урок Linux Command Line & Bash Scripting Mastery на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Linux Command Line & Bash Scripting Mastery, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Linux Command Line & Bash Scripting Mastery содержит 4 уроков всего.
Сверхвозможности регулярных выражений в grep
Добро пожаловать на урок по расширенным возможностям grep с регулярными выражениями! На предыдущем уроке мы изучили сами регулярные выражения. Теперь раскроем весь их потенциал в мощной команде grep.
grep — основной инструмент для поиска текстовых шаблонов в файлах. Сочетая его с расширенными регулярными выражениями, вы сможете находить именно то, что нужно, независимо от сложности шаблона.
Включение расширенных регулярных выражений (-E)
По умолчанию grep использует базовые регулярные выражения (BRE). Чтобы использовать более продвинутые возможности, такие как +, ?, | и (), необходимо включить расширенные регулярные выражения (ERE).
Это можно сделать с помощью параметра -E или команды egrep, которая фактически является grep -E. Создадим пример файла для работы:
echo "apple
banana
appanana
orange
app" > fruits.txtКвантификаторы: один или более (+)
Квантификатор + соответствует одному или более вхождениям предшествующего символа или группы. Он особенно полезен, когда ожидается, что шаблон повторится хотя бы один раз.
Например, чтобы найти строки, в которых после 'p' следует один или более символов 'a', используется pa+.
grep -E 'pa+' fruits.txtКвантификаторы: ноль или более (*)
Квантификатор * соответствует нулю или более вхождениям предшествующего символа или группы. Это полезно, когда символ может присутствовать, но его наличие не является обязательным.
Найдём строки, в которых после 'b' следует ноль или более символов 'a':
grep -E 'ba*' fruits.txtКвантификаторы: ноль или один (?)
Квантификатор ? соответствует нулю или одному вхождению предшествующего символа или группы. Его можно представить как способ сделать символ необязательным.
Хотите найти и 'color', и 'colour'? Сделайте символ 'u' необязательным:
echo "color
colour
coor" > words.txt
grep -E 'colou?r' words.txtТочное количество с помощью {} (фигурные скобки)
Для ещё большего контроля можно задать точное количество или диапазон с помощью фигурных скобок {}:
a{3}: ровно три символа 'a'.a{2,}: два или более символа 'a'.a{1,3}: от одного до трёх символов 'a'.
Найдём строки, в которых 'a' повторяется ровно два раза:
grep -E 'a{2}' fruits.txtЯкоря: начало и конец (^, $)
Якоря не соответствуют символам — они соответствуют позициям. Якорь ^ соответствует началу строки, а $ — концу строки.
Это особенно важно, если нужно убедиться, что шаблон соответствует всей строке или начинается и заканчивается именно там, где требуется.
^apple: строки, начинающиеся с 'apple'.banana$: строки, заканчивающиеся на 'banana'.^apple$: строки, содержащие только 'apple'.
grep -E '^app' fruits.txtЧередование с OR (|)
Символ | (вертикальная черта) действует как оператор OR. Он позволяет искать один шаблон ИЛИ другой. Это особенно удобно для одновременного поиска нескольких разных слов или фраз.
Например, чтобы найти строки, содержащие 'apple' или 'orange':
grep -E 'apple|orange' fruits.txtГруппировка шаблонов с помощью ()
Круглые скобки () используются для группировки частей регулярного выражения. Это позволяет применять квантификаторы или чередование ко всей группе, а не только к одному символу.
Например, чтобы найти 'ana', встречающееся один или более раз после 'b':
grep -E 'b(ana)+' fruits.txtБыстрая проверка: расширенные возможности grep
Дан файл data.txt, содержащий:
cat
cats
catt
catterpillar
dog
Какая команда корректно найдёт строки, в которых после 'cat' следует ноль или более символов 't'?
Повторение: возможности регулярных выражений в grep
Вы освоили продвинутые приёмы работы с grep с использованием расширенных регулярных выражений! Мы рассмотрели:
- Использование
-Eдля возможностей расширенных регулярных выражений. - Квантификаторы:
+(один или более),*(ноль или более),?(ноль или один) и{}для задания точного количества. - Якоря:
^(начало строки) и$(конец строки). - Чередование
|для условий OR. - Группировку шаблонов с помощью
().
Эти инструменты позволяют выполнять невероятно точный и гибкий поиск текста, превращая вас в настоящего мастера командной строки!
Часто задаваемые вопросы
Урок «Расширенный grep с регулярными выражениями» бесплатный?
Да — полный текст урока «Расширенный grep с регулярными выражениями» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Linux Command Line & Bash Scripting Mastery, подпишись на CoddyKit PRO. Курс Linux Command Line & Bash Scripting Mastery содержит 4 уроков всего.
Чему я научусь в уроке «Расширенный grep с регулярными выражениями»?
Применяйте сложные шаблоны регулярных выражений с «grep» для точного и эффективного поиска текста в файлах. Ты практикуешь Linux Command Line & Bash Scripting Mastery с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Linux Command Line & Bash Scripting Mastery?
Предыдущий опыт не требуется. Linux Command Line & Bash Scripting Mastery на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Расширенный grep с регулярными выражениями»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Linux Command Line & Bash Scripting Mastery?
Да. Каждый урок Linux Command Line & Bash Scripting Mastery включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Введение в регулярные выражения (Regex)
- Расширенный grep с регулярными выражениями
- Сочетание регулярных выражений с sed и awk
- Группы захвата, обратные ссылки и подстановка