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










