Výukový program regulárních výrazů pro Linux: Příklad Grep Regex
Co jsou regulární výrazy Linuxu?
Regulární výrazy Linuxu jsou speciální znaky, které pomáhají vyhledávat data a porovnávat složité vzory. Regulární výrazy se zkracují jako 'regexp' nebo 'regex'. Používají se v mnoha linuxových programech, jako je grep, bash, rename, sed atd.
Typy regulárních výrazů
Pro snazší pochopení se naučíme různé typy Regex jeden po druhém.
klikněte zde pokud video není přístupné
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é ze základních regulárních výrazů.
Symbol | Descriptionty |
---|---|
. | nahradí jakýkoli znak |
^ | odpovídá začátku řetězce |
$ | odpovídá konci řetězce |
* | nula nebo vícekrát odpovídá předchozímu znaku |
\ | Představují speciální znaky |
() | Seskupuje regulární výrazy |
? | Odpovídá přesně jednomu znaku |
Podívejme se na příklad.
Chcete-li zobrazit obsah existujícího souboru, spusťte vzorek cat
Vyhledejte obsah obsahující písmeno „a“.
"^' odpovídá začátku řetězce. Hledejme obsah, který ZAČÍNÁ na a
Filtrovány jsou pouze řádky, které začínají 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í $
Interval Regulární výrazy
Tyto výrazy nám říkají o počtu výskytů znaku v řetězci. Oni jsou
Výraz | Description |
---|---|
{ne} | Přesně odpovídá předchozímu znaku, který se objevuje 'n' krát |
{n,m} | Odpovídá předchozímu znaku objevujícímu se 'n' krát, ale ne více než m |
{n, } | Odpovídá předchozímu znaku pouze tehdy, když se objeví 'n'krát nebo vícekrát |
Příklad:
Odfiltrujte všechny řádky, které obsahují znak 'p'
Chceme zkontrolovat, zda se znak 'p' vyskytuje přesně 2x v řetězci za sebou. K tomu by syntaxe byla:
cat sample | grep -E p\{2}
Poznámka: K těmto regulárním výrazům musíte přidat -E.
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 | Description |
---|---|
\+ | 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í znak 't'
Můžeme použít příkaz jako
cat sample|grep "a\+t"
Rozšíření ortézy
Syntaxe pro rozšíření složených závorek je buď posloupnost, nebo čárkami oddělený seznam položek uvnitř složených závorek „{}“. Počáteční a koncové položky v sekvenci jsou odděleny dvěma tečkami „..“.
Nějaké příklady:
Ve výše uvedených příkladech vytváří příkaz echo řetězce pomocí rozšíření složené závorky.
Shrnutí:
- Regulární výrazy jsou sada znaků používaných ke kontrole vzorů v řetězcích
- Říká se jim také „regexp“ a „regex“
- Pro psaní skriptů je důležité naučit se regulární výrazy
- Některé základní regulární výrazy jsou:
Symbol | Descriptionty |
---|---|
. | nahradí jakýkoli znak |
^ | odpovídá začátku řetězce |
$ | odpovídá konci řetězce |
- Některé rozšířené regulární výrazy jsou:
Výraz | Description |
---|---|
\+ |
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 | Description |
---|---|
{ne} | Přesně odpovídá předchozímu znaku, který se objevuje 'n' krát |
{n,m} | Odpovídá předchozímu znaku objevujícímu se 'n' krát, ale ne více než m |
{n, } | Odpovídá předchozímu znaku pouze tehdy, když se objeví 'n'krát nebo vícekrát |
- Rozšíření závorky se používá ke generování řetězců. Pomáhá při vytváření více řetězců z jednoho.