Primeri upotrebe Linux grep naredbe

Uvod

Komanda Linux grep se koristi kao metoda za filtriranje unosa.

GREP označava Global Regular Expression Printer i zbog toga, kako bi je efikasno iskoristili, trebali biste imati malo znanja o regularnim izrazima.

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

01 od 09

Kako tražiti string u fajlu koristeći GREP

Linux grep naredba.

Zamislite da imate tekstualnu datoteku zvanu knjige sa sledećim naslovima za djecu:

Da biste sve naslove pronašli uz reč "The" u naslovu, koristićete sledeću sintaksu:

grep Knjige

Sljedeći rezultati će biti vraćeni:

U svakom slučaju, reč "The" će biti označena.

Imajte na umu da je pretraga osjetljiva na velika i mala slova, pa ako je jedan od naslova imao "umjesto" The "onda ne bi bio vraćen.

Da ignorišete slučaj možete dodati sljedeći prekidač:

grep knjige - igranje igara

Takođe možete koristiti i -i prekidač na sledeći način:

grep-i knjige

02 od 09

Potražite string u datoteci koristeći znakove

Grep naredba je vrlo moćna. Za filtriranje rezultata možete koristiti mnoštvo tehnika prilagođavanja uzoraka.

U ovom primeru ću vam pokazati kako potražiti niz u fajlu koristeći džokerove .

Zamislite da imate datoteku zvanu mjesta sa sledećim nazivima škotskog mesta:

aberdeen

aberystwyth

aberlour

inverurie

inverness

newburgh

novi jelen

novi galloway

glasgow

edinburgh

Ako želite da pronađete sva mesta sa inver u ime koristite sledeću sintaksu:

grep inver * mesta

Asterisk (*) wildcard označava 0 ili više. Prema tome, ako imate mesto zvano Inver ili mesto nazvano inverness onda će se oba vratiti.

Još jedan džoker koji možete koristiti je period (.). Ovo možete koristiti za pojedinačno slovo.

grep inver.r mesta

Gornja komanda bi pronašla mjesta koja se nazivaju inverurie i inverarije, ali ne bi mogla naći invereerie jer može biti samo jedna džokarta između dva r-a koja se označava u jedinstvenom periodu.

Džemperi za period su korisni ali može izazvati probleme ako ih imate kao dio teksta koji tražite.

Na primer, pogledajte ovu listu domenskih imena

Da biste pronašli sve o About.com, možete pretraživati ​​samo sledeću sintaksu:

grep * o * domainnames

Gornja komanda će pasti ako lista sadrži sledeće ime u njemu:

Stoga, možete pokušati sledeću sintaksu:

grep * about.com domainnames

Ovo bi funkcioniralo u redu osim ako nije postojao domen sa slijedećim imenom:

aboutycom.com

Da biste zaista tražili izraz o mreži, trebalo bi da izbegnete tačku na sledeći način:

grep * o \ .com domenskim imenima

Konačna džokarta koja će vam pokazati je znak pitanja koja označava nulu ili jedan karakter.

Na primjer:

grep? ber placenames

Gornja komanda će vratiti aberdeen, aberistvit ili čak berwick.

03 od 09

Traži strune na početku i kraju linije Koristeći grep

Karat (^) i dolar ($) simbol omogućavaju vam da tražite obrasce na početku i kraju linija.

Zamislite da imate datoteku pod nazivom fudbal sa sljedećim timskim imenima:

Ako ste želeli da pronađete sve ekipe koje su počele sa Manchesterom, koristićete sledeću sintaksu:

grep ^ Manchester tima

Gornja komanda bi vratila Manchester City i Manchester United, ali ne i FC United Of Manchester.

Alternativno možete pronaći sve timove koji se završavaju sa United koristeći sledeću sintaksu:

grep United $ timova

Gornja komanda bi vratila Manchester United i Newcastle United, ali ne i FC United Of Manchester.

04 od 09

Brojanje utakmica pomoću grep

Ako ne želite da vratite stvarne linije koje odgovaraju šablonu koristeći grep, ali samo želite da saznate koliko postoje, možete koristiti sledeću sintaksu:

grep -c obrazac inputfile

Ako je obrazac dvaput uparen onda će broj 2 biti vraćen.

05 od 09

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

Zamislite da imate spisak naziva mesta sa navedenim zemljama na sledeći način:

Možda ste primetili da kolevski zaljev nema zemlju koja je povezana s tim.

Da biste potražili sva mesta sa državom, mogli biste da koristite sledeću sintaksu:

grep zemljišta $

Povratni rezultati bi bili sva mesta osim kolevskog zaliva.

Ovo očigledno radi samo za mesta koja se završavaju na kopnu (teško naučna).

Možete izabrati opciju koristeći sledeću sintaksu:

grep -v zemlja $ mesta

Ovo bi moglo da pronađe sva mesta koja se nisu završila zemljom.

06 od 09

Kako pronaći prazne linije u fajlovima pomoću grep

Zamislite da imate ulaznu datoteku koju koristi aplikacija treće strane koja zaustavlja čitanje datoteke kada pronađe praznu liniju na sljedeći način:

Kada se aplikacija stigne na liniju nakon liverpool-a prestane da čita značenje u potpunosti je propusteno.

Možete koristiti grep da traži prazne linije sa sledećom sintaksom:

grep ^ $ mesta

Nažalost, ovo nije naročito korisno jer samo vraća prazne linije.

Naravno, možete da brojite broj praznih linija kao proveru da li je datoteka važeća na sledeći način:

grep -c ^ $ mesta

Bilo bi korisnije znati brojeve linija koji imaju praznu liniju tako da ih možete zamijeniti. To možete učiniti pomoću sledeće naredbe:

grep -n ^ $ mesta

07 od 09

Kako tražiti stringove gornje ili male slovne znakove Koristeći grep

Koristeći grep možete odrediti koje linije u fajlu imaju velike slova koristeći sljedeću sintaksu:

grep '[AZ]' filename

Kvadratne zagrade [] omogućavaju vam da odredite opseg karaktera. U gornjim primjerima se podudaraju svi znakovi između A i Z.

Prema tome, da biste podesili male slova, možete koristiti sledeću sintaksu:

grep '[az]' filename

Ako želite da odgovarate samo slovima a ne numeričkim ili drugim simbolima, možete koristiti sledeću sintaksu:

grep '[a-zA-Z]' filename

Možete to učiniti i sa brojevima na sljedeći način:

grep '[0-9]' filename

08 od 09

Traženje ponavljajućih šablona Koristeći grep

Možete iskoristiti zakrivljene zagrade {} da biste potražili ponavljajući obrazac.

Zamislite da imate datoteku sa brojevima na slijedeći način:

Znate da prvi deo broja treba da bude tri cifre i želite pronaći linije koje ne odgovaraju ovom šablonu.

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

U ovom slučaju želimo da linije koje počinju sa tri broja sledi veza (-). To možete uraditi s sljedećom sintaksom:

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

Kao što znamo iz prethodnih primera, karat (^) znači da linija mora početi sa sledećim obrazcem.

[0-9] traži bilo koji broj između 0 i 9. Kako je ovo uključeno tri puta, odgovara 3 broja. Na kraju, postoji veza za označavanje da veza mora da uspije tri brojeve.

Pomoću uvrtanih zagrada možete učiniti manju pretragu na sledeći način:

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

Kretanje izbjegava {držač tako da radi kao dio regularnog izraza, ali u suštini ono što ovo govori je [0-9] {3} što znači bilo koji broj između 0 i 9 tri puta.

Zakrivljene konzole se mogu koristiti i na sledeći način:

{5,10}

{5,}

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

09 od 09

Korišćenje izlaza iz drugih komandi Koristeći grep

Do sada smo pogledali uzorkovanje u pojedinačnim datotekama, ali grep može koristiti izlaz iz drugih komandi kao ulaz za podudaranje uzoraka.

Odličan primer ovoga je korišćenje komande ps koji sadrži aktivne procese.

Na primer, pokrenite sledeću komandu:

ps -ef

Svi procesi koji se pokreću na vašem sistemu će biti prikazani.

Možete koristiti grep da potražite određeni pokretački proces na sledeći način:

ps -ef | grep firefox

Sažetak

Grep naredba je osnovna Linux naredba i ona je vredna učenja jer će vam olakšati život prilikom pretraživanja datoteka i procesa prilikom korištenja terminala.