Регулярні вирази linux

Відео: LPIC 103.7 Регулярні вирази в Linux

Регулярні вирази - це дуже потужний інструмент для пошуку тексту по шаблону, обробки і зміни рядків, який можна застосовувати для вирішення безлічі завдань. Ось основні з них:

  • Помилки під час введення тексту;
  • Пошук і заміна тексту в файлі;
  • Пакетне перейменування файлів;
  • Взаємодія з сервісами, таким як Apache;
  • Перевірка рядки на відповідність шаблону.

Це далеко не повний список, регулярні вирази дозволяють робити набагато більше. Але для нових користувачів вони можуть здатися занадто складними, оскільки для їх формування використовується спеціальна мова. Але з огляду на надані можливості, регулярні вирази Linux повинен знати і вміти використовувати кожен системний адміністратор.

У цій статті ми розглянемо регулярні вирази bash для початківців, щоб ви змогли розібратися з усіма можливостями цього інструменту.

Регулярні вирази Linux

У регулярних виразах можуть використовуватися два типи символів:

  • звичайні літери;
  • метасимволу.

Звичайні символи - це букви, цифри і розділові знаки, з яких складаються будь-які рядки. Всі тексти складаються з літер і ви можете використовувати їх в регулярних виразах для пошуку потрібної позиції в тексті.




Метасимволи - це дещо інше, саме вони дають силу регулярними виразами. За допомогою метасимволов ви можете зробити набагато більше ніж пошук одного символу. Ви можете шукати комбінації символів, використовувати динамічне їх кількість і вибирати діапазони. Всі спецсимволи можна розділити на два типи, це символи заміни, які замінюють собою звичайні символи, або оператори, які вказують скільки разів може повторюватися символ. Синтаксис регулярного виразу буде виглядати таким чином:

обичний_сімвол спецсімвол_оператор

спецсімвол_замени спецсімвол_оператор




Якщо оператор не вказати, то буде вважатися, що символ обов`язково повинен зустрінеться в рядку один раз. Таких конструкцій може бути багато. Ось основні метасимволу, які використовують регулярні вирази bash:

Відео: LPIC 103 7 Регулярні вирази в Linux

  • - зі зворотним косою риси починаються літерні спецсимволи, а також він використовується якщо потрібно використовувати спецсимвол у вигляді будь-якого розділового знака;
  • ^ - вказує на початок рядка;
  • $ - вказує на кінець рядка;
  • * - вказує, що попередній символ може повторюватися 0 або більше разів;
  • + - вказує, що попередній символ повинен повториться більше один або більше разів;
  • ? - попередній символ може зустрічатися нуль або один раз;
  • {N} - вказує скільки разів (n) потрібно повторити попередній символ;
  • {N, n} - попередній символ може повторюватися від N до n раз;
  • . - будь-який символ окрім перекладу рядка;
  • [Az] - будь-який символ, зазначений в дужках;
  • х | у - символ x або символ y;
  • [^ Az] - будь-який символ, крім тих, що вказані в дужках;
  • [A-z] - будь-який символ з вказаного діапазону;
  • [^ A-z] - будь-який символ, якого немає в діапазоні;
  • b - позначає межу слова з пропуском;
  • B - позначає що символ повинен бути всередині слова, наприклад, ux співпаде з uxb або tuxedo, але не співпаде з Linux;
  • d - означає, що символ - цифра;
  • D - нецифровий символ;
  • n - символ перекладу рядка;
  • s - один із символів пробілу, пробіл, табуляція і так далі;
  • S - будь-який символ окрім пробілу;
  • t - символ табуляції;
  • v - символ вертикальної табуляції;
  • w - будь-який буквений символ, включаючи підкреслення;
  • W - будь-який буквений символ, крім підкреслення;
  • uXXX - символ Unicdoe.

Важливо відзначити, що перед літерними спецсимволами потрібно використовувати косу риску, щоб вказати, що далі йде спецсимвол. Правильно і зворотне, якщо ви хочете використовувати спецсимвол, який застосовується без косої риски в якості звичайного символу, то вам доведеться додати косу риску.

Наприклад, ви хочете знайти в тексті рядок 1+ 2 = 3. Якщо ви використовуєте цей рядок в якості регулярного виразу, то нічого не знайдете, тому що система інтерпретує плюс як спецсимвол, який повідомляє, що попередня одиниця повинна повторитися один або більше разів. Тому його потрібно екранувати: 1 + 2 = 3. Без екранування наше регулярний вираз відповідало б тільки рядку 11 = 3 або 111 = 3 і так далі. Перед одно межу ставити не потрібно, тому що це не спецсимвол.

Приклади використання регулярних виразів

Тепер, коли ми розглянули основи і ви знаєте як все працює, залишилося закріпити отримані знання про регулярні вирази linux grep на практиці. Два дуже корисні спецсимволи - це ^ і $, які позначають початок і кінець рядка. Наприклад, ми хочемо отримати всіх користувачів, зареєстрованих в нашій системі, ім`я яких починається на s. Тоді можна застосувати регулярний вираз "^ S". Ви можете використовувати команду egrep:

$ Egrep "false $" / etc / passwd

Щоб вивести імена користувачів, які починаються на s або d використовуйте такий вислів:

$ Egrep "^ [s | d]" / etc / passwd

Тепер давайте виберемо всіх користувачів, довжина імені яких становить не три символи. Ім`я користувача завершується двокрапкою. Ми можемо сказати, що воно може містити будь-який буквений символ, який повинен бути повторений три рази, перед двокрапкою:

Поділися в соціальних мережах:

Схожі
Квантіфікатори в регулярних виразівКвантіфікатори в регулярних виразів
Аналоги notepad ++ для linuxАналоги notepad ++ для linux
Регулярні виразиРегулярні вирази
Що таке фільтри в php.Що таке фільтри в php.
Модифікатори в регулярних виразахМодифікатори в регулярних виразах
Вивчаємо coffeescript. Типи даних.Вивчаємо coffeescript. Типи даних.
Команда find в linuxКоманда find в linux
Функції для роботи з регулярними виразами в phpФункції для роботи з регулярними виразами в php
Російська мова та регулярні вирази в phpРосійська мова та регулярні вирази в php
Команда findstrКоманда findstr
» » Регулярні вирази linux