Primjer upotrebe Linux grep naredbe

Uvod

Linux grep naredba koristi se kao metoda za filtriranje unosa.

GREP označava Global Regular Expression Printer i stoga, kako bi ga učinkovito iskoristili, trebali biste imati neko znanje o regularnim izrazima.

U ovom ću članku pokazati niz primjera koji će vam pomoći da razumijete grep naredbu.

01 od 09

Kako tražiti string u datoteci pomoću GREP

Linux grep Command.

Zamislite da imate tekstualnu datoteku koja se zove knjiga sa sljedećim dječjim naslovima:

Da biste pronašli sve knjige s riječi "The" u naslovu, upotrijebite sljedeću sintaksu:

grep Knjige

Vratit će se sljedeći rezultati:

U svakom slučaju, riječ "The" bit će istaknuta.

Imajte na umu da je pretraživanje osjetljivo na velika i mala slova tako da ako jedan od naslova ima "umjesto" "umjesto" onda se ne bi vratio.

Za zanemarivanje slučaja možete dodati sljedeću sklopku:

zalijepite knjige - slučajni slučaj

Također možete koristiti sklopku -i na sljedeći način:

grep -i knjige

02 od 09

Tražite niz u datoteci pomoću znakova

Grep naredba je vrlo moćna. Pomoću mnoštva tehnika podudaranja uzoraka možete filtrirati rezultate.

U ovom primjeru pokazat ću vam kako tražiti niz u datoteci pomoću zamjenskih znakova .

Zamislite da imate datoteku koja se zove mjesta sa sljedećim škotskim imenima mjesta:

Aberdeen

Aberystwyth

aberlour

Inverurie

Inverness

Newburgh

novi jeleni

novo galloway

Glazgov

Edinburg

Ako želite pronaći sva mjesta s inv u ime upotrijebite sljedeću sintaksu:

grep inver * mjesta

Zvjezdica zvjezdice (*) označava 0 ili više. Stoga, ako imate mjesto zvan inver ili mjesto zvano inverzno onda bi se oboje vratili.

Još jedna zamjenska kartica koju možete koristiti jest razdoblje (.). To možete upotrijebiti za odgovaranje na jedno slovo.

grep inver.r mjesta

Gornja naredba bi pronašla mjesta zvane inverurije i inververne, ali ne bi imala potencijal, jer postoji samo jedan zamjenski znak između dva r-a kako je označeno jednim razdobljem.

Razdoblje zamjenske kartice je korisno, ali može uzrokovati probleme ako ga imate kao dio teksta koji pretražujete.

Na primjer, pogledajte ovaj popis imena domena

Da biste pronašli sve about.comove, možete pretraživati ​​pomoću sljedeće sintakse:

grep * about * imena domena

Gornja naredba pada ako popis sadrži sljedeće ime:

Stoga biste mogli probati sljedeću sintaksu:

grep * about.com domainnames

To bi bilo dobro ako ne postoji domena sa sljedećim imenom:

aboutycom.com

Da biste zaista tražili pojam about.com, trebali biste izbjeći točku na sljedeći način:

grep * about \ .com domainnames

Konačni zamjenski znak koji će vam pokazati je upitnik koji označava nulu ili jedan znak.

Na primjer:

grep? ber placenames

Gornja naredba vratit će aberdeen, aberystwyth ili čak berwick.

03 od 09

Pretraži žice na početku i kraju reda Koristeći grep

Simbol karat (^) i dolar ($) omogućuju vam pretraživanje uzoraka na početku i kraju linija.

Zamislite da imate datoteku koja se zove nogomet sa sljedećim timskim imenima:

Ako biste željeli pronaći sve momčadi koje su započele s Manchesterom, upotrijebite sljedeću sintaksu:

grep ^ Manchester momčadi

Gornja naredba vratit će Manchester City i Manchester United, ali ne FC United Of Manchester.

Alternativno možete pronaći sve momčadi koje završavaju sa Unitedom koristeći sljedeću sintaksu:

grep United $ timovi

Gornja naredba vratit će Manchester United i Newcastle United, ali ne FC United Of Manchester.

04 od 09

Brojanje broja podudarnosti Koristeći grep

Ako ne želite vratiti stvarne linije koje odgovaraju obrascu koristeći grep, ali samo želite znati koliko ima možete koristiti sljedeću sintaksu:

grep-c pattern inputfile

Ako je uzorak dvostruko podudaran onda bi se broj 2 vratio.

05 od 09

Pronalaženje svih uvjeta koji se ne podudaraju koristeći grep

Zamislite da imate popis imena mjesta s navedenim zemljama kako slijedi:

Možda ste primijetili da u kolwynskom zaljevu nema zemlje povezane s njom.

Da biste tražili sva mjesta u zemlji, možete upotrijebiti sljedeću sintaksu:

grep zemljišta $ mjesta

Rezultati se vraćaju u svim mjestima, osim u uvali Colwyn.

To očigledno funkcionira samo za mjesta koja završavaju u zemlji (gotovo znanstveno).

Možete preokrenuti odabir koristeći sljedeću sintaksu:

grep -v zemljišta $ mjesta

To bi otkrilo sva mjesta koja nisu završila sa zemljom.

06 od 09

Kako pronaći prazne linije u datotekama Koristeći grep

Zamislite da imate ulaznu datoteku koju koristi aplikacija treće strane koja zaustavlja čitanje datoteke kada pronađe praznu liniju kako slijedi:

Kada aplikacija dođe do linije nakon Liverpoola, prestat će čitati značenje koje se u potpunosti propušta.

Možete koristiti grep za traženje praznih redaka sa sljedećom sintaksom:

grep ^ $ mjesta

Nažalost, to nije osobito korisno jer samo vraća prazne crte.

Naravno, mogli biste računati broj praznih redaka kako biste vidjeli je li datoteka valjana kako slijedi:

grep -c ^ $ mjesta

Bilo bi, međutim, korisnije znati linije brojeve koji imaju prazan red tako da ih možete zamijeniti. To možete učiniti pomoću sljedeće naredbe:

grep -n ^ $ mjesta

07 od 09

Kako pretražiti žice velikih ili malih slova Korištenje grep

Koristeći grep možete odrediti koji redovi u datoteci imaju velika slova koristeći sljedeću sintaksu:

grep '[AZ]' naziv datoteke

Kvadratne zagrade [] vam omogućuju određivanje raspona znakova. U gornjem primjeru odgovara bilo kojem znaku između A i Z.

Stoga da biste odgovarali malim slovima, možete upotrijebiti sljedeću sintaksu:

grep '[az]' naziv datoteke

Ako želite podudarati samo slova, a ne numeričke ili druge simbole, koristite sljedeću sintaksu:

grep '[a-zA-Z]' naziv datoteke

Isto možete učiniti i sa brojevima kako slijedi:

grep '[0-9]' naziv datoteke

08 od 09

Traženje ponovljenih uzoraka Koristeći grep

Možete koristiti kovrčaste zagrade {} da biste potražili uzorak koji se ponavlja.

Zamislite da imate datoteku s telefonskim brojevima kako slijedi:

Znate da prvi dio broja mora biti tri znamenke i želite pronaći retke koje ne odgovaraju ovom obrascu.

Iz prethodnog primjera znate da [0-9] vraća sve brojeve u datoteci.

U ovom slučaju želimo da linije počinju s tri brojeva, a zatim s crticom (-). To možete učiniti sa sljedećom sintaksom:

grep "^ [0-9] [0-9] [0-9] -" brojevi

Kao što znamo iz prethodnih primjera, karat (^) znači da linija mora početi sa sljedećim obrascem.

[0-9] će tražiti bilo koji broj između 0 i 9. Budući da je to uključeno tri puta, odgovara 3 broja. Konačno, postoji crtica koja označava da crtica mora uspjeti tri broja.

Korištenjem kovrčastih zagrada možete smanjiti pretraživanje na sljedeći način:

grep "^ [0-9] \ {3 \} -" brojevi

Slash izbjegava {zaglavlje tako da djeluje kao dio regularnog izraza, no u biti ono što govori je [0-9] {3} što znači bilo koji broj između 0 i 9 tri puta.

Urezane zagrade također se mogu koristiti kako slijedi:

{5,10}

{5,}

{5,10} znači da se znak koji se traži mora biti ponovljen najmanje 5 puta, ali ne više od 10, dok {5,} znači da se znak mora ponoviti najmanje 5 puta, ali može biti više od toga.

09 od 09

Korištenje izlaza iz drugih naredbi Koristeći grep

Do sada smo pregledali podudaranje uzoraka unutar pojedinačnih datoteka, ali grep može koristiti izlaz iz drugih naredbi kao ulaz za podudaranje uzoraka.

Dobar primjer toga je korištenje naredbe ps koja navodi aktivne procese.

Primjerice, pokrenite sljedeću naredbu:

ps -ef

Prikazuju se svi pokrenuti procesi na vašem sustavu.

Možete koristiti grep za traženje određenog procesa pokretanja kako slijedi:

ps -ef | grep firefox

Sažetak

Grep naredba je temeljna Linux naredba i to je onaj koji je vrijedan učenja jer će vaš život učiniti mnogo lakšim kada traži datoteke i procese pri korištenju terminala.