Vodič za regularne izraze u Linuxu: primjer Grep Regex

Što su Linux regularni izrazi?

Linux regularni izrazi su posebni znakovi koji pomažu u pretraživanju podataka i pronalaženju složenih uzoraka. Regularni izrazi se skraćuju kao 'regexp' ili 'regex'. Koriste se u mnogim Linux programima kao što su grep, bash, rename, sed itd.

Vrste regularnih izraza

Radi lakšeg razumijevanja naučimo različite vrste Regexa jednu po jednu.

Kliknite ovdje ako video nije dostupan

Osnovni regularni izrazi

Neke od često korištenih naredbi s regularnim izrazima su tr, sed, vi i grep. Dolje su navedeni neki od osnovnih regularnih izraza.

Simbol Descriptioni
. zamjenjuje bilo koji znak
^ odgovara početku niza
$ odgovara kraju niza
* podudara se nula ili više puta s prethodnim znakom
\ Predstavljaju posebne znakove
() Grupira regularne izraze
? Odgovara točno jednom znaku

Pogledajmo primjer.

Izvršite cat sample da vidite sadržaj postojeće datoteke

Osnovni regularni izrazi

Tražite sadržaj koji sadrži slovo 'a'.

Osnovni regularni izrazi

'^' odgovara početku niza. Potražimo sadržaj koji POČINJE s a

Osnovni regularni izrazi

Filtriraju se samo reci koji počinju sa znakom. Redovi koji ne sadrže znak 'a' na početku se zanemaruju.

Pogledajmo još jedan primjer –

Osnovni regularni izrazi

Koristite samo one retke koji završavaju s t $

Osnovni regularni izrazi

Interval Regularni izrazi

Ovi nam izrazi govore o broju pojavljivanja znaka u nizu. Oni su

Izraz Description
{ne} Odgovara prethodnom znaku koji se točno pojavljuje 'n' puta
{n,m} Odgovara prethodnom znaku koji se pojavljuje 'n' puta, ali ne više od m
{n,} Podudara se s prethodnim znakom samo ako se pojavi 'n' puta ili više

Primjer:

Filtriraj sve retke koji sadrže znak 'p'

Interval Regularni izrazi

Želimo provjeriti pojavljuje li se znak 'p' točno 2 puta u nizu jedan za drugim. Za ovo bi sintaksa bila:

cat sample | grep -E p\{2}

Interval Regularni izrazi

Napomena: ovim regularnim izrazima morate dodati -E.

Prošireni regularni izrazi

Ovi regularni izrazi sadrže kombinacije više od jednog izraza. Neki od njih su:

Izraz Description
\+ Odgovara jednom ili više pojavljivanja prethodnog znaka
\? Odgovara nuli ili jednom pojavljivanju prethodnog znaka

Primjer:

Traženje svih znakova 't'

Prošireni regularni izrazi

Pretpostavimo da želimo filtrirati retke u kojima znak 'a' prethodi znaku 't'

Možemo koristiti naredbu poput

cat sample|grep "a\+t"

Prošireni regularni izrazi

Proširenje naramenice

Sintaksa za proširenje vitičastih zagrada je niz ili popis stavki odvojenih zarezom unutar vitičastih zagrada "{}". Početna i završna stavka u nizu odvojene su s dvije točke "..".

Neki primjeri:

Proširenje naramenice

U gornjim primjerima, naredba echo stvara nizove pomoću proširenja vitičaste zagrade.

Sažetak:

  • Regularni izrazi su skup znakova koji se koriste za provjeru uzoraka u nizovima
  • Nazivaju se i 'regexp' i 'regex'
  • Važno je naučiti regularne izraze za pisanje skripti
  • Neki osnovni regularni izrazi su:
Simbol Descriptioni
. zamjenjuje bilo koji znak
^ odgovara početku niza
$ odgovara kraju niza
  • Neki prošireni regularni izrazi su:
Izraz Description

\+

Odgovara jednom ili više pojavljivanja prethodnog znaka
\? Odgovara nuli ili jednom pojavljivanju prethodnog znaka
  • Neki regularni izrazi intervala su:
Izraz Description
{ne} Odgovara prethodnom znaku koji se točno pojavljuje 'n' puta
{n,m} Odgovara prethodnom znaku koji se pojavljuje 'n' puta, ali ne više od m
{n,} Podudara se s prethodnim znakom samo ako se pojavi 'n' puta ili više
  • Proširenje zagrada koristi se za generiranje nizova. Pomaže u stvaranju više nizova iz jednog.