20 korisnih primjera naredbi egrep u Linuxu


Ukratko: u ovom ćemo vodiču raspravljati o nekim praktičnim primjerima naredbe egrep. Nakon što slijede ovaj vodič, korisnici će moći učinkovitije pretraživati tekst u Linuxu.

Jeste li ikada bili frustrirani jer ne možete pronaći potrebne informacije u zapisima? Izdvajanje potrebnih informacija iz velikog skupa podataka složen je i dugotrajan zadatak.

Stvari postaju zaista izazovne ako operativni sustav ne nudi prave alate i tu dolazi Linux da vas spasi. Linux nudi razne alate za filtriranje teksta kao što su awk, sed, cut, itd.

Međutim, egrep je jedan od najmoćnijih i najčešće korištenih uslužnih programa za obradu teksta u Linuxu, a mi ćemo raspravljati o nekim primjerima naredbe egrep.

Naredba egrep u Linuxu prepoznaje se po obitelji naredbi grep, koja se koristi za pretraživanje i podudaranje s određenim uzorkom u datotekama. Radi slično kao grep -E (grep Extended regex), ali uglavnom pretražuje određenu datoteku ili čak redak do retka ili ispisuje redak u datoteci.

Sintaksa naredbe egrep je sljedeća:

egrep [OPTIONS] PATTERNS [FILES]

Stvorimo oglednu tekstualnu datoteku sa sljedećim sadržajem kao primjer:

cat sample.txt

Ovdje možemo vidjeti da je tekstualna datoteka spremna. Sada raspravimo nekoliko uobičajenih primjera koji se mogu koristiti svakodnevno.

1. Kako pronaći uzorak u jednoj datoteci

Počnimo s jednostavnim primjerom podudaranja uzorka, gdje možemo upotrijebiti naredbu ispod za traženje niza professional u datoteci sample.txt:

egrep professionals sample.txt

Ovdje možemo vidjeti da naredba ispisuje redak koji sadrži navedeni uzorak.

2. Kako označiti podudarne uzorke u datoteci

Ispis možemo učiniti informativnijim isticanjem odgovarajućeg uzorka. Da bismo to postigli, možemo koristiti opciju --color naredbe egrep. Na primjer, donja naredba označit će tekst profesionalci crvenom bojom:

egrep --color=auto professionals sample.txt

Ovdje možemo vidjeti da je isti izlaz informativniji u usporedbi s prethodnim. Također, lako možemo prepoznati da se riječ profesionalci ponavlja dva puta.

Na većini Linux sustava gornja postavka omogućena je prema zadanim postavkama koristeći sljedeći alias:

alias egrep='egrep –color=auto'

3. Kako pronaći uzorak u više datoteka

Naredba egrep prihvaća više datoteka kao argument, što nam omogućuje traženje određenog uzorka u više datoteka. Shvatimo ovo na primjeru.

Najprije izradite kopiju datoteke sample.txt:

cp sample.txt sample-copy.txt

Sada pretražite uzorak professionals u obje datoteke:

egrep professionals sample.txt sample-copy.txt 

U gornjem primjeru, možemo vidjeti naziv datoteke u izlazu, koji predstavlja odgovarajući redak iz te datoteke.

4. Kako brojati odgovarajuće retke u datoteci

Ponekad samo trebamo saznati postoji li uzorak u datoteci ili ne. Ako da, u koliko je redaka prisutan? U takvim slučajevima možemo koristiti opciju -c naredbe.

Na primjer, donja naredba prikazat će 1 kao izlaz jer je riječ professionals prisutna u samo jednom retku.

egrep -c professionals sample.txt

1

5. Kako ispisati samo odgovarajuće retke u datoteci

U prethodnom primjeru vidjeli smo da opcija -c ne broji broj pojavljivanja uzorka. Na primjer, riječ profesionalci pojavljuje se dva puta u istom retku, ali opcija -c tretira je kao samo jedno podudaranje.

U takvim slučajevima možemo upotrijebiti opciju -o naredbe za ispis samo odgovarajućeg uzorka. Na primjer, donja naredba prikazat će riječ profesionalci u dva odvojena retka:

egrep -o professionals sample.txt

Sada prebrojimo retke pomoću naredbe wc:

egrep -o professionals sample.txt | wc -l

U gornjem primjeru upotrijebili smo kombinaciju naredbi egrep i wc za brojanje broja pojavljivanja određenog uzorka.

6. Kako pronaći obrazac zanemarivanjem velikih i malih slova

Prema zadanim postavkama, egrep izvodi podudaranje uzoraka na način koji razlikuje velika i mala slova. To znači riječi - mi, mi, mi i MI se tretiraju kao različite riječi. Međutim, možemo nametnuti pretraživanje koje ne razlikuje velika i mala slova pomoću opcije -i.

Na primjer, u donjoj naredbi podudaranje uzorka uspjet će za tekst mi i Mi:

egrep -i we sample.txt 

7. Kako isključiti djelomično podudarne uzorke

U prethodnom primjeru vidjeli smo da naredba egrep izvodi djelomično podudaranje. Na primjer, kada smo tražili tekst mi, podudaranje uzorka je uspjelo i za druge tekstove. Kao što su web, web stranica i bili.

Da bismo prevladali ovo ograničenje, možemo koristiti opciju -w koja nameće podudaranje cijele riječi.

egrep -w we sample.txt

8. Kako obrnuti podudaranje uzorka u datoteci

Do sada smo koristili naredbu egrep za ispis redaka u kojima je prisutan zadani uzorak. Međutim, ponekad želimo operaciju izvesti na suprotan način.

Na primjer, možemo htjeti ispisati retke u kojima zadani uzorak nije prisutan. To možemo postići uz pomoć -v opcije:

egrep -v we sample.txt

Ovdje možemo vidjeti da naredba ispisuje sav redak koji ne sadrži tekst we.

9. Kako pronaći broj retka uzorka

Možemo upotrijebiti opciju -n naredbe da omogućimo numeriranje redaka, koji prikazuje broj retka u izlazu kada usklađivanje uzorka uspije. Ovaj jednostavan trik čini rezultat smislenijim.

egrep -n professionals sample.txt

U gornjem izlazu možemo vidjeti da je riječ profesionalci prisutna u 5. retku.

10. Kako izvršiti usklađivanje uzorka u tihom načinu rada

U tihom načinu rada, naredba egrep ne ispisuje odgovarajući uzorak. Dakle, moramo upotrijebiti povratnu vrijednost naredbe kako bismo utvrdili je li podudaranje uzoraka uspjelo ili nije.

Možemo upotrijebiti opciju -q naredbe da omogućimo tihi način rada, što je zgodno prilikom pisanja skripti ljuske.

egrep -q professionals sample.txt
egrep -q non-existing-pattern sample.txt

U ovom primjeru, povratna vrijednost nula označava prisutnost uzorka, dok vrijednost različita od nule označava odsutnost uzorka.

11. Kako prikazati linije prije podudaranja uzorka

Ponekad ima smisla prikazati nekoliko linija oko odgovarajućeg uzorka. Za takve scenarije možemo koristiti opciju -B naredbe, koja prikazuje N redaka prije odgovarajućeg uzorka.

Na primjer, donja naredba ispisat će redak za koji je uspjelo podudaranje uzorka, kao i 2 retka prije njega.

egrep -B 2 -n professionals sample.txt 

U ovom smo primjeru upotrijebili opciju -n za prikaz brojeva redaka.

12. Kako prikazati linije nakon podudaranja uzorka

Na sličan način možemo koristiti opciju -A naredbe za prikaz redaka nakon podudaranja uzorka. Na primjer, donja naredba ispisat će redak za koji je uspjelo podudaranje uzorka, kao i sljedeća 2 retka.

egrep -A 2 -n professionals sample.txt

13. Kako prikazati linije oko podudaranja uzorka

Osim toga, naredba egrep podržava opciju -C koja kombinira funkcionalnost opcija -A i -B, koji prikazuje retke prije i poslije podudarnog uzorka.

egrep -C 2 -n professionals sample.txt 

14. Kako rekurzivno pronaći uzorak u više datoteka

Kao što je prethodno objašnjeno, možemo izvršiti podudaranje uzoraka na više datoteka. Međutim, situacija postaje škakljiva kada su datoteke prisutne u više poddirektorija i sve ih prosljeđujemo kao argumente naredbe.

U takvim slučajevima možemo izvršiti podudaranje uzorka na rekurzivan način pomoću opcije -r kao što je prikazano u sljedećem primjeru.

Najprije stvorite 2 poddirektorija i kopirajte datoteku sample.txt u njih:

mkdir -p dir1/dir2
cp sample.txt dir1/
cp sample.txt dir1/dir2/

Izvedimo sada operaciju pretraživanja na rekurzivan način:

egrep -r professionals dir1

U gornjem primjeru možemo vidjeti da je podudaranje uzorka uspjelo za datoteke dir1/dir2/sample.txt i dir1/sample.txt.

15. Kako spojiti jedan znak pomoću regularnih izraza

Možemo upotrijebiti znak (.) za podudaranje bilo kojeg pojedinačnog znaka osim za kraj retka. Na primjer, regularni izraz ispod odgovara tekstu har, hat i ima:

egrep "ha." sample.txt

16. Kako spojiti nula ili više pojavljivanja znaka

Možemo koristiti zvjezdicu (*) za podudaranje s nula ili više pojavljivanja prethodnog znaka. Na primjer, donji regularni izraz odgovara tekstu koji sadrži niz we iza kojeg slijedi nula ili više pojavljivanja znaka b.

egrep "web*" sample.txt

17. Kako spojiti jedno ili više pojavljivanja prethodnog znaka

Možemo koristiti plus (+) za podudaranje jednog ili više pojavljivanja prethodnog znaka. Na primjer, donji regularni izraz odgovara tekstu koji sadrži niz we iza kojeg slijedi barem jedno pojavljivanje znaka b.

egrep "web+" sample.txt

Ovdje možemo vidjeti da podudaranje uzoraka ne uspijeva za riječi - mi i bili, zbog nepostojanja znaka b.

18. Kako uskladiti početak reda

Možemo koristiti umetanje (^) za predstavljanje početka retka. Na primjer, donji regularni izraz ispisuje retke koji počinju tekstom Mi:

egrep "^We" sample.txt

19. Kako spojiti kraj retka

Možemo koristiti dolar ($) za predstavljanje kraja retka. Na primjer, donji regularni izraz ispisuje retke koji završavaju tekstom e.:

egrep "e.$" sample.txt

20. Kako ukloniti prazne retke u datoteci

Možemo upotrijebiti znak za umetanje (^) odmah iza kojeg slijedi dolar ($) za predstavljanje praznog retka. Upotrijebimo ovo u regularnom izrazu za uklanjanje praznih redaka:

egrep -n -v "^$" sample.txt

U gornjem izlazu možemo vidjeti da brojevi redaka 2, 4, 6, 8 i 10 nisu prikazani jer su prazni.

Zaključak

U ovom smo članku raspravljali o nekim korisnim primjerima naredbi egrep. Ovi se primjeri mogu koristiti u svakodnevnom životu za poboljšanje produktivnosti.

Znate li za neki drugi najbolji primjer naredbe egrep u Linuxu? Recite nam svoje stavove u komentarima ispod.