Co jsou regulární výrazy Linuxu?
Pravidelné výrazy Linuxu jsou speciální znaky, které pomáhají vyhledávat data a porovnávat složité vzory. Regulární výrazy jsou zkráceny jako „regexp“ nebo „regex“. Používají se v mnoha linuxových programech, jako je grep, bash, rename, sed atd.
Druhy regulárních výrazů
Pro snazší pochopení se postupně naučíme různé typy regulárních výrazů.
- Základní regulární výrazy
- Intervalové regulární výrazy
- Rozšířené regulární výrazy
- souhrn
Pokud video není přístupné, klikněte sem
Základní regulární výrazy
Některé z běžně používaných příkazů s regulárními výrazy jsou tr, sed, vi a grep. Níže jsou uvedeny některé základní regulární výrazy.
Symbol | Popisy |
---|---|
. | nahradí libovolný znak |
odpovídá začátku řetězce | |
$ | odpovídá konci řetězce |
* | odpovídá nule nebo vícekrát předchozímu znaku |
\ | Představují speciální znaky |
() | Seskupuje regulární výrazy |
? | Odpovídá přesně jedné postavě |
Podívejme se na příklad.
Provedením ukázky kočky zobrazíte obsah existujícího souboru
Vyhledejte obsah obsahující písmeno „a“.
' ^ ' odpovídá začátku řetězce. Vyhledejme obsah, který ZAČÍNÁ a
Filtrovány jsou pouze řádky začínající znakem. Řádky, které na začátku neobsahují znak „a“, jsou ignorovány.
Podívejme se na další příklad -
Vyberte pouze ty řádky, které končí na t pomocí $
Intervalové regulární výrazy
Tyto výrazy nám říkají o počtu výskytů znaku v řetězci. Oni jsou
Výraz | Popis |
---|---|
{n} |
Odpovídá přesně předchozímu znaku, který se objevuje 'n' krát |
{n, m} | Shoduje se s předchozím znakem, který se objevuje krát, ale ne více než m |
{n,} | Shoduje se s předchozím znakem, pouze pokud se objeví 'n' krát nebo více |
Příklad:
Odfiltrujte všechny řádky, které obsahují znak „p“
Chceme zkontrolovat, zda se znak „p“ objevuje přesně dvakrát za sebou v řetězci. K tomu by byla syntaxe:
cat sample | grep -E p\{2}
Poznámka: Musíte přidat -E s těmito regulárními výrazy.
Rozšířené regulární výrazy
Tyto regulární výrazy obsahují kombinace více než jednoho výrazu. Někteří z nich jsou:
Výraz | Popis |
---|---|
\ + |
Odpovídá jednomu nebo více výskytům předchozího znaku |
\? |
Odpovídá nule nebo jednomu výskytu předchozího znaku |
Příklad:
Hledání všech znaků „t“
Předpokládejme, že chceme odfiltrovat řádky, kde znak „a“ předchází znaku „t“
Můžeme použít příkaz jako
cat sample|grep "a\+t"
Roztažení výztuhy
Syntaxe pro rozšíření složených závorek je buď posloupnost, nebo seznam položek uvnitř složených závorek „{}“ oddělených čárkami. Počáteční a koncová položka v pořadí jsou odděleny dvěma tečkami „…“.
Nějaké příklady:
Ve výše uvedených příkladech vytvoří příkaz echo řetězce pomocí rozšíření složené závorky.
Souhrn:
- Regulární výrazy jsou sada znaků používaných ke kontrole vzorů v řetězcích
- Nazývají se také „regexp“ a „regex“
- Při psaní skriptů je důležité se naučit regulární výrazy
- Některé základní regulární výrazy jsou:
Symbol | Popisy |
---|---|
. | nahradí libovolný znak |
odpovídá začátku řetězce | |
$ | odpovídá konci řetězce |
- Některé rozšířené regulární výrazy jsou:
Výraz | Popis |
---|---|
\ + | Odpovídá jednomu nebo více výskytům předchozího znaku |
\? | Odpovídá nule nebo jednomu výskytu předchozího znaku |
- Některé intervalové regulární výrazy jsou:
Výraz | Popis |
---|---|
{n} | Odpovídá přesně předchozímu znaku, který se objevuje 'n' krát |
{n, m} | Shoduje se s předchozím znakem, který se objevuje krát, ale ne více než m |
{n,} | Shoduje se s předchozím znakem, pouze pokud se objeví 'n' krát nebo více |
- Rozšíření složené závorky se používá ke generování řetězců. Pomáhá při vytváření více řetězců z jednoho.