Урок за регулярен израз на Linux: Пример за Regex на Grep
⚡ Умно обобщение
Регулярните изрази в Linux са специални поредици от символи, които търсят данни и съпоставят сложни шаблони в инструменти като grep, sed и vi, използвайки основни, интервални, разширени и форми с разширителни скоби за прецизно филтриране на текста.

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










