Razumijevanje naredbe grep s praktičnim primjerima za jednostavno filtriranje i prikaz sadržaja datoteke
GREP
označava "Global Regular Expression Print". To je koristan uslužni program naredbenog retka koji nudi Linux, za traženje retka teksta koji odgovara uzorku koji je dao korisnik.
grep
preuzima unos od korisnika u obliku nizova ili riječi koje korisnik želi pretraživati u određenoj datoteci. Naredba zatim provjerava datoteku koju je korisnik odredio za ovaj uzorak, a zatim vraća retke koji odgovaraju danom uzorku.
Obavlja izvrstan posao filtriranjem sadržaja datoteke, čime naš zadatak olakšava pretraživanje određenog sadržaja na jednoj ili više datoteka istovremeno.
U ovom članku pogledajmo funkcioniranje grep
zapovijed s pojedinim praktičnim primjerima u detalje.
Dostupne opcije sa grep
naredba
Ovo su neke od osnovnih opcija koje ćete često koristiti s grep
naredba.
Opcija | Opis |
-i | Za pretraživanje bez obzira na velika i mala slova |
-r | Za rekurzivno traženje svih datoteka u navedenom direktoriju i njegovim poddirektorijima |
-c | Za prikaz ukupnog broja pojavljivanja niza |
-v | Za prikaz nepodudarnih linija |
-w | Filtar za tu određenu riječ koja se koristi zasebno |
Koristiti grep
naredba
grep
naredba se obično koristi s cijevi (|
) korisnost. Može se implementirati s shell pipe-om kada ga želite koristiti s nekim drugim Linux naredbama. Iako, grep
može se koristiti i zasebno bez cijevi (|
) korisnost.
Pogledajmo neke od osnovnih sintaksa grep
naredba sa i bez uslužnog programa cijevi.
Najprije ću vam pokazati primjer tekstualne datoteke koju ću koristiti za ilustraciju grep
naredba.
INDIJA JE LIJEPA ZEMLJA LJUDI KOJI VOLE MIR. Indija stoji na tri stupa zakonodavne, izvršne i sudske vlasti. Indija je prekrasna zemlja ljudi koji vole mir. Indija se brine za ljude jer je njezin resurs kartezijanskim koordinatama važnost svih kartezijanskih koordinata. Slijede dva prazna reda. korištenje volovskih zaprega uobičajen je prizor u selu za agrarne poslove. Ovo je kraj datoteke uzorka.
grep
koristi se s cijevi ( |)korisnost
grep
naredba se može implementirati zajedno s drugim Linux naredbama pomoću shell cijevi. Na primjer, korištenjem mačka
naredba za prikaz sadržaja datoteke, ali istovremeno slanje izlaza pomoću grep
naredba za prikaz samo sadržaja koji želite vidjeti. To će biti jasnije kada prođemo kroz primjer.
Sintaksa:
[naredba] | grep [string]
Primjer:
mačka uzorak.txt | grep zakonodavno tijelo
Evo, koristio sam mačka
naredba za prikaz nekih redaka iz datoteke 'sample.txt'. Prikazuju se samo oni retki koji u sebi sadrže riječ 'zakonodavstvo' i zanemaruju ostale retke.
Izlaz:
gaurav@ubuntu:~/workspace$ cat sample.txt | grep zakonodavna vlast indija stoji na tri stupa zakonodavne, izvršne i sudske vlasti. gaurav@ubuntu:~/radni prostor$
grep
koristi se bez cijevi ( |)korisnost
grep
može se čak koristiti izravno kao pojedinačna naredba bez korištenja cijevi ( |
) korisnost.
Sintaksa:
grep [string_to_be_searched] [naziv datoteke]
Primjer:
grep India sample.txt
Izlaz:
Indija je prekrasna zemlja ljudi koji vole mir. Indija brine o ljudima kao o svom resursu
Stoga sam koristio grep
naredba izravno za filtriranje redaka koji sadrže niz "India" iz tekstualne datoteke "sample.txt".
Pretraživanje bez obzira na velika i mala slova grep
naredba
Linux je vrlo oprezan u pogledu osjetljivosti na velika i mala slova kada aktiviramo naredbe na terminalu. To zahtijeva od korisnika da pazi na velika i mala slova stringa koji se stavlja u naredbu.
Pogledajmo to kroz primjer.
grep mir sample.txt
U ovom slučaju nećemo dobiti izlaz jer u datoteci uzorka ne postoji riječ "mir". Imamo riječ "Mir" s velikim "P". Riječ je ista, ali kada koristimo grep
naredba bez ikakve opcije, traži točno podudaranje u datoteci, ne obazirući se na promjene u velikim slovima.
Da biste izbjegli ovu dvosmislenost, možete jednostavno koristiti -i
opcija koja doslovno govori o grep
naredba "Zaboravi na slučaj u koji sam stavio niz i samo potraži sve odgovarajuće uzorke u datoteci."
Sintaksa:
grep -i [niz] [naziv datoteke]
Primjer:
grep -i mir sample.txt
Izlaz:
INDIJA JE LIJEPA ZEMLJA LJUDI KOJI VOLE MIR. Indija je prekrasna zemlja ljudi koji vole mir.
Prikazuju se svi podudarni redovi bez obzira na slučaj u kojem se podudarni niz nalazi.
Rekurzivno pretraživanje korištenjem grep
naredba
The -r
opcija će tražiti sve datoteke u direktoriju i sve njegove poddirektorije koji se podudaraju s uzorkom niza koji je dao korisnik u naredbi.
Sintaksa:
grep -i -r [niz] [puta_datoteke]
Primjer:
grep -i -r tomcat /home/gaurav/workspace
Ovdje je niz 'tomcat' i bit će pretraživan u radnom prostoru direktorija. Svi poddirektoriji i datoteke u direktoriju 'radnog prostora' također će se skenirati kako bi odgovarali danom uzorku niza.
Izlaz:
./context_log.policy:// catalina.policy - Dozvole sigurnosne politike za Tomcat 7 ./context_log.policy:// Napomena: ako je tomcat-juli.jar u ${catalina.base}, a ne u ${catalina.home }, ./context_log.policy:// grant codeBase "file:${catalina.base}/bin/tomcat-juli.jar" {..} ./context_log.policy:grant codeBase "file:${catalina.home }/bin/tomcat-juli.jar" { ./context_log.policy: dopuštenje java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket.server"; ./context.xml: ./catalina.properties:# - Tomcat Bootstrap JAR-ovi ./catalina.properties:# - Tomcat API JAR-ovi ./catalina.properties:# - Tomcat JAR-ovi ./catalina.properties:# - Uobičajeni ne-Tomcat JAR-ovi ./catalina.properties:org.apache.catalina.startup.TldConfig.jarsToSkip=tomcat7-websocket.jar ./catalina.properties:tomcat.util.buf.StringCache.byte.enabled=true ./catalina:#.properties . tomcat.util.buf.StringCache.char.enabled=true ./catalina.properties:#tomcat.util.buf.StringCache.trainThreshold=500000 ./catalina.properties:#tomcat.util.buf.StringCache=5.cacheSize. /server.xml: pathname="conf/tomcat-users.xml" /> ./server.xml:
BILJEŠKA: Tijekom korištenja -r
opcija s grep
naredba trebamo dati putanju datoteke, a ne naziv datoteke
Pretraživanje cijelih riječi samo sa grep
naredba
Mnogo puta je slučaj da ćete tražiti jednu riječ, ali ćete na kraju ispuniti svoj terminal odgovarajućim redovima koji sadrže vašu odgovarajuću riječ, ali ne kao pojedinačnu riječ. Možda ćete vidjeti retke koji sadrže neke riječi čiji je poddio niz koji ste unijeli.
Zbunjen s ovim? Ne brinite, mnogo je lakše razumjeti kada dobijete primjer.
Primjer:
Ovdje želim pretražiti pojedinačnu riječ "košarica" i prikazati sve retke koji odgovaraju ovoj riječi u datoteci "sample.txt".
grep -i cart sample.txt
Izlaz:
Kartezijanske koordinate važnost svih kartezijanskih koordinata. korištenje volovskih zaprega uobičajen je prizor u selu za agrarne poslove. Kola su nestala jer ih je dječak ostavio.
U izlazu možete primijetiti da riječ 'kartezijanski' također sadrži riječ 'kolica' i stoga se retke koji sadrže riječ 'kartezijanski' također prikazuju iako ne želimo da se prikazuju.
Možete koristiti -w
opcija s grep
naredba za rješavanje ove nejasnoće.
Sintaksa:
grep -i -w [niz] [naziv datoteke]
Primjer:
grep -i -w uzorak košarice.txt
Izlaz:
korištenje volovskih zaprega uobičajen je prizor u selu za agrarne poslove. Kolica su nestala jer ih je dječak ostavio.
Sada, kada ste koristili -w
opcija sa grep
dobit ćete samo retke u kojima se riječ 'kolica' koristi kao cjelina.
Obrnuto pretraživanje pomoću grep
naredba
grep
naredba se također može koristiti na obrnuti način. Možemo koristiti grep
naredba suprotno skrivanjem odgovarajućih redaka i prikazivanjem samo redaka u kojima nije pronađeno podudaranje. To možete učiniti pomoću -v
opcija s grep
naredba.
Sintaksa:
grep -i -v [niz] [naziv datoteke]
Primjer:
grep -i -v uzorak resursa.txt
Izlaz:
INDIJA JE LIJEPA ZEMLJA LJUDI KOJI VOLE MIR. Indija stoji na tri stupa zakonodavne, izvršne i sudske vlasti. Indija je prekrasna zemlja ljudi koji vole mir. kartezijanske koordinate važnost svih th kartezijanskih koordinata. korištenje volovskih zaprega uobičajen je prizor u selu za agrarne poslove. Ovo je kraj datoteke uzorka.
U izlazu se prikazuju svi ostali retki osim retka koji sadrži riječ 'resurs'.
Brojanje pojavljivanja podudarnog niza
Izlaz od grep
naredba je obično vrlo duga ako su podaci u datoteci opsežni. Što je više šibica, duži su rezultati grep
naredba. Linux vam pruža opciju gdje možete prikazati broj pojavljivanja podudaranja.
Sintaksa:
grep -i -c [niz] [naziv datoteke]
Primjer:
grep -i -c indijski uzorak.txt
Izlaz:
gaurav@ubuntu:~/workspace$ grep -i -c india sample.txt 4 gaurav@ubuntu:~/workspace$
Ovdje je izlaz broj koji predstavlja broj pojavljivanja riječi 'Indija' u datoteci sample.txt.
BILJEŠKA: Koristio sam -i
opcija u svakom primjeru kako biste bili sigurni s problemom osjetljivosti velikih i malih slova. U slučaju da ste sigurni u velika i mala slova riječi koju tražite, možete sigurno izostaviti -i
opcija.
Zaključak
Naučili smo temeljnu upotrebu grep
naredbu na Linux sustavima u ovom vodiču. Također smo naučili prikazati različite sadržaje koji najbolje odgovaraju našim zahtjevima i ne pretrpavati terminal gomilom redova. grep
naredba će sigurno uštedjeti vrijeme ako se koristi za skeniranje velikih skupova podataka.