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

Základní regulární výrazy

Vyhledejte obsah obsahující písmeno „a“.

Základní regulární výrazy

"^' odpovídá začátku řetězce. Hledejme obsah, který ZAČÍNÁ na a

Základní regulární výrazy

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 –

Základní regulární výrazy

Vyberte pouze ty řádky, které končí na t pomocí $

Základní regulární výrazy

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'

Interval Regulární výrazy

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}

Interval Regulární výrazy

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'

Rozšířené regulární výrazy

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é regulární výrazy

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:

Rozšíření ortézy

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.