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

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










