GNU/Linux >> Znalost Linux >  >> Linux

Grep Regex:Kompletní průvodce

Úvod

grep příkaz (zkratka pro G lobální R pravidelné E xpressions P rint) je výkonný nástroj pro zpracování textu pro prohledávání souborů a adresářů.

Když grep je kombinován s regulárním výrazem (reg ulární ex zobrazení), pokročilé vyhledávání a filtrování výstupu se zjednoduší. Správci systému, vývojáři a běžní uživatelé těží ze zvládnutí regulárního výrazu pomocí grep příkaz.

Tento průvodce vás naučí, jak grep s regulárním výrazem prostřednictvím příkladů.

Předpoklady

  • Přístup k terminálu/příkazovému řádku.
  • Textový soubor k prohledávání. Příklady používají .bashrc soubor.
  • Základní použití příkazu grep.

Regulární výraz Grep

Syntaxe pro grep příkaz obsahuje regulární výrazy v následujícím formátu:

grep [regex] [file]

Regulární výrazy jsou jednoduché příkazy, které pomáhají filtrovat data a soubory. Mnoho příkazů Linuxu, jako je například příkaz awk nebo příkaz sed, také používá regulární výrazy k vyhledávání a manipulaci s informacemi.

Příkaz regulárního výrazu tvoří dva obecné typy znaků:

  • Literály , což jsou standardní textové znaky.
  • Speciální znaky nebo metaznaky mají zvláštní význam, pokud nejsou ukončeny zpětným lomítkem (\ ).

grep příkaz nabízí tři možnosti syntaxe regulárního výrazu:

1. Základní regulární výraz (BRE )

2. Rozšířené regulární výrazy (ERE )

3. Regulární výrazy kompatibilní s Pearl (PCRE )

Ve výchozím nastavení grep používá BRE syntaxe.

Příklad regulárního výrazu Grep

Spusťte následující příkaz a otestujte, jak grep regex funguje:

grep if .bashrc

Regulární výraz hledá řetězec znaků. Výsledek zobrazuje všechny případy, kde je písmeno i se zobrazí a za ním f v .bashrc soubor. Proto výstup zvýrazní následující výsledky:

  • pokud
  • elif
  • nepokud y
  • identif ying

Příkaz vrátí pouze ty řádky, kde je shoda.

Jak používat Regex s Grep

Regex nabízí mnoho možností, jak upřesnit vyhledávání pomocí grep . Níže jsou uvedeny některé běžné příklady vysvětlující základní syntaxi a logiku. Kombinujte shody a vytvořte komplexní příkazy regulárního výrazu.

Doslovné shody

Doslovné shody provádějí přesnou shodu pro zadaný řetězec znaků. Předchozí vzorový výraz pro if demonstruje doslovnou shodu.

Vyhledávání rozlišuje malá a velká písmena. Následující příkaz vrátí výsledky odlišné od předchozího příkladu:

grep If .bashrc

Chcete-li vyhledat více slov, přidejte uvozovky:

grep "if the" .bashrc

Vynechání uvozovek považuje druhé slovo za soubor nebo umístění.

Ukotvení

Shody kotev určují umístění čáry ve vyhledávání. Existují dva typy kotvy:

  • Znak stříšky (^ ) vyhledá odpovídající řádky začínající zadaným výrazem.
  • Znak dolaru ($ ) vyhledá odpovídající řádky končící zadaným literálem.

Chcete-li například porovnat řádky začínající slovem alias v .bashrc soubor, použijte:

grep ^alias .bashrc

Vyhledávání nezobrazuje řádky s tabulátory nebo mezerami před slovem.

Chcete-li porovnat řádky končící slovem then v .bashrc soubor, spusťte:

grep then$ .bashrc

Použijte obě kotvy k vytvoření příkazu regulárního výrazu, který hledá jedno slovo nebo příkaz v řádku:

grep ^esac$ .bashrc

K nalezení prázdných řádků v souboru používejte pouze kotvy. Přidejte -n možnost zobrazení čísel řádků ve výstupu:

grep -n ^$ .bashrc

Bez -n možnost, výstup je prázdný.

Odpovídají libovolnému znaku

Období (. ) metaznak regulárního výrazu odpovídá libovolnému znaku na místě znaménka. Například:

grep r.o .bashrc

Výstup zobrazuje všechny výskyty písmene r , následovaný libovolným znakem a následným o . Tečkou může být jakýkoli znak, například písmeno, číslo, znak nebo mezera.

Přidejte několik teček k označení více zástupných znaků:

grep r..t .bashrc

Zkombinujte s porovnáváním kotvy a vytvořte komplexní příkaz regulárního výrazu. Například:

grep ..t$ .bashrc

Příkaz najde všechny řádky s libovolnými dvěma znaky, za nimiž následuje písmeno t na konci.

Výrazy v závorce

Výrazy hranatých závorek umožňují shodu více znaků nebo rozsahu znaků na pozici. Například, aby odpovídaly všem řádkům, které obsahují and nebo end v .bashrc použijte následující vzor:

grep [ae]nd .bashrc

Výrazy hranatých závorek umožňují vyloučení znaků přidáním stříšky (^ ) podepsat. Například, aby odpovídalo všemu kromě and nebo end , použijte:

grep [^ae]nd .bashrc

Pomocí výrazů hranatých závorek zadejte rozsah znaků přidáním pomlčky (- ) mezi prvním a posledním písmenem. Vyhledejte například všechny výskyty velkých písmen:

grep [A-Z] .bashrc

Zkombinujte výrazy v závorkách s kotvou, abyste našli všechna slova začínající velkými písmeny:

grep ^[A-Z] .bashrc

Výrazy hranatých závorek umožňují více rozsahů. Například všechny znaky, které nejsou písmeny, porovnejte s:

grep [^a-zA-Z] .bashrc

Výstup zvýrazní čísla a znaky a ignoruje všechna písmena.

Třídy postav

Grep nabízí standardní třídy znaků jako předdefinované funkce pro zjednodušení výrazů hranatých závorek. Níže je tabulka, která popisuje některé třídy a ekvivalent výrazu v závorce.

Syntaxe Popis Ekvivalentní
[[:alnum:]] Všechna písmena a čísla. "[0-9a-zA-Z]"
[[:alpha:]] Všechna písmena. "[a-zA-Z]"
[[:blank:]] Mezery a karty. [CTRL+V<TAB> ]
[[:digit:]] Číslice 0 až 9. [0-9]
[[:lower:]] Malá písmena. [a-z]
[[:punct:]] Interpunkce a další znaky. "[^a-zA-Z0-9]"
[[:upper:]] Velká písmena. [A-Z]
[[:xdigit:]] Šestnáctkové číslice. "[0-9a-fA-F]"

Úplný seznam tříd znaků grep je v manuálu grep.

Kvantifikátory

Kvantifikátory jsou metaznaky, které určují počet výskytů. Následující tabulka ukazuje syntaxi každého kvantifikátoru grep s krátkým popisem.

Syntaxe Popis
* Žádná nebo více shod.
? Nula nebo jedna shoda.
+ Jedna nebo více shod.
{n} n odpovídá.
{n,} n nebo více shod.
{,m} m odpovídá.
{n,m} Od n m odpovídá.

* znak odpovídá vzoru nulakrát nebo vícekrát. Chcete-li předvést, spusťte následující příkaz:

grep m*and .bashrc

V tomto případě * znak odpovídá písmenu m nula nebo vícekrát. Proto „and , mmand , mmand " jsou všechny shody. Písmeno m zopakuje se libovolněkrát, když následuje znak * podepsat.

Chcete-li najít nulu nebo přesně jednu shodu, použijte ? podepsat. Uzavřete prohlášení do jednoduchých uvozovek a znak vynechejte, abyste se vyhnuli interpretaci. Například:

grep 'm\?and' .bashrc

Případně použijte rozšířené regulární výrazy, abyste se vyhnuli escapování:

grep -E 'm?and' .bashrc

Výstup zvýrazní všechny výskyty and nebo mmand .

K určení přesného počtu opakování použijte kvantifikátory rozsahu. Hledejte například řetězce se dvěma samohláskami:

grep '[aeiouAEIOU]\{2\}' .bashrc
grep -E '[aeiouAEIOU]{2}' .bashrc

Výstup zvýrazní všechna slova dvěma samohláskami.

Střídání

Střídání umožňuje definovat alternativní shody. Uzavřete alternativní řetězce do jednoduchých uvozovek a oddělte je pomocí svislé čáry (\| ).

Chcete-li například vyhledat slova bash nebo alias v .bashrc soubor, použijte:

grep 'bash\|alias' .bashrc

Případně použijte rozšířený regulární výraz a vynechejte znak escape:

grep -E 'bash|alias' .bashrc

Výstup zvýrazní obě instance řetězce v souboru.

Seskupování

Regulární výrazy umožňují seskupování vzorů do jedné položky. Umístěte skupinu do uvozených závorek pro běžný regulární výraz nebo použijte rozšířené.

Hledejte například řetězec bashrc a vytvořte rc znaky volitelné:

grep 'bash\(rc\)\?' .bashrc
grep -E 'bash(rc)?' .bashrc

Výstup zvýrazní všechny instance bashrc . Od rc je volitelný, příkaz také odpovídá slovu bash .

Speciální výrazy zpětného lomítka

Příkaz grep nabízí několik jedinečných výrazů zpětného lomítka pro pokročilé porovnávání hranic slov. Níže je tabulka s krátkými příklady pro každý typ výrazu.

Syntaxe Příklad Shody
(Tučný text představuje shodu)
\b '\band\b' a
a "
\a \
a
a
\B '\Band' _a
_a _
sa
ha y
\< '\ a
a "
a y
a _
a
a
\> 'and\>' a
"a"
sa
_a
a
a
\w '\wand' _and
_a _
ruka y
písek
\W '\Wand' "a "
/a /
\s '\sand' a
a
\S '\Sand' _and
"a "
písek
ruka y
_a _
/a /

Použijte například \b hranice k nalezení slova, které není součástí jiného slova:

grep '\bse[et]\b' .bashrc

Výraz vyhledá slova see a set . Hranice zajišťuje izolaci slov.

Unikající metaznaky

Escapování metaznaků považuje speciální znaky za literály. Chcete-li například vyhledat tečku (.) na konci řádku, uzavřete metaznak:

grep '\.$' .bashrc

Nepovolení interpretace znaků pomáhá při prohledávání zdrojového kódu nebo konfiguračních souborů.


Linux
  1. Jak nainstalovat Void Linux:Kompletní průvodce krok za krokem

  2. Kompletní průvodce pro použití AsciiDoc v Linuxu

  3. Je potřeba regulární výraz (grep) pro víceřádkové vyhledávání

  1. Co je Kubernetes? Kompletní průvodce

  2. Regulární výrazy v Grepu (regex)

  3. Kompletní průvodce LVM v Linuxu pro začátečníky

  1. Linux Commands - Kompletní průvodce

  2. Kompletní průvodce instalací Linuxu na Chromebook

  3. Kompletní průvodce instalací OxygenOS na OnePlus One v Linuxu