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
Tražite sadržaj koji sadrži slovo 'a'.
'^' odgovara početku niza. Potražimo sadržaj koji POČINJE s a
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 –
Koristite samo one retke koji završavaju s t $
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'
Ž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}
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'
Pretpostavimo da želimo filtrirati retke u kojima znak 'a' prethodi znaku 't'
Možemo koristiti naredbu poput
cat sample|grep "a\+t"
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:
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.