Jeste li već koristili grep? Većinu vremena osnovni grep trik može obaviti većinu posla. Međutim, grep nudi mnoštvo načina za obavljanje pretraživanja i fino podešavanje rezultata na korisniju verziju. U ovom članku provjerimo upotrebu naredbe grep.
Upotreba grepa
Provjera postojanja
Ako koristite bilo koju Linux distro distribuciju, tada ste već instalirali grep. Izvedite sljedeću naredbu u terminalu.
grep --verzija
Ova se naredba koristi za prikaz verzije trenutno instaliranog grep-a. Sada nam treba demo datoteka. U mom slučaju generirat ću tekstualnu datoteku koja uključuje sve instalirane pakete na mom sustavu.
Osnove
Osnovna upotreba grepa slijedi sljedeću strukturu.
grepIli, za lakše razumijevanje, upotrijebite ovaj.
grepU tom će slučaju grep izvršiti pretraživanje u datoteci i ispisati sve retke koji uključuju uzorak (pojam za pretraživanje).
grep python ~ / Desktop / PackageList.txt
Grep je pretražio datoteku “PackageList.txt "Ranije sam generirao i ispisao sve retke koji uključuju" python ".
Ista se operacija može izvesti i na drugi način. Pogledajte sljedeći primjer.
mačka ~ / Desktop / PackageList.txt | grep python
Ovdje sam, koristeći naredbu “cat”, poslao sadržaj datoteke “PackageList.txt ”na grep. Koristeći izlaz cat, grep je izvršio pretragu i ispisao retke koji sadrže pojam za pretraživanje.
Sad dolazi zabavna stvar. Možete doslovno slagati više grep naredbi samo tako.
mačka ~ / Desktop / PackageList.txt | grep - | grep p | grep python
Prvi grep filtrira se do redaka crticom, drugi filtrira do redaka s p, a završni grep filtrira do redaka s pythonom. Ima smisla?
Osjetljivost na velika i mala slova
Prilikom pretraživanja glavno je pitanje osjetljivost na velika i mala slova. Prema zadanim postavkama, grep razlikuje velika i mala slova.
Na primjer, traženje "Python" neće pokazati nikakav rezultat.
mačka ~ / Desktop / PackageList.txt | grep Python
Da biste slučaj grep-a učinili "neosjetljivim", dodajte sljedeću opciju.
mačka ~ / Desktop / PackageList.txt | grep -i Python
Pretraživanje datoteka
Recimo da imate direktorij s brojnim tekstualnim datotekama. Vaš je cilj identificirati datoteke koje sadrže ili ne sadrže obrazac (pojam za pretraživanje).
Smatram da je ova metoda vrlo korisna kada pretražujem gomilu datoteka dnevnika. Kako nemam vremena ručno otvarati i provjeravati svaku pojedinu datoteku, imam grep da obavi posao umjesto mene.
Za popis datoteka koje sadrže podudarnost upotrijebite zastavicu "-l".
grep -l
Kao što rezultati sugeriraju, pojam "python" prisutan je u sve 3 datoteke prisutne u direktoriju "Desktop".
Za popis datoteka bez ikakvog podudaranja upotrijebite zastavicu "-L".
grep -L
“NoMatch.txt ”jedina je datoteka koja ne sadrži pojam„ python ”.
Obrnuta pretraga
Zadano ponašanje grepa je ispis samo redaka s odgovarajućim uzorkom, zar ne? Vrijeme je da preokrenemo postupak. Ovaj put ispisat ćemo samo linije BEZ podudarnog uzorka.
Samo dodajte opciju "-v" na grep.
mačka ~ / Desktop / PackageList.txt | grep -i -v Python
Ispis redaka prije / poslije meča
Prema zadanim postavkama, grep će ispisati samo redak koji odgovara obrascu pretraživanja. Koristeći ovu tehniku, možete narediti grepu da ispiše redove i prije / poslije meča.
Za ispis redaka prije utakmice koristite sljedeću strukturu.
grep -B
Ovdje je 5 redak broja koji će se grep ispisati PRIJE odgovarajućeg retka.
Za ispis redaka nakon meča upotrijebite sljedeći.
grep -A
Što kažete na ispis i prije i nakon odgovarajuće linije? U tom slučaju upotrijebite zastavicu "-C".
grep -C
Broj retka
Kada grep prikazuje izlaz, ne spominje se broj retka. Za pridružene brojeve linija koristite oznaku "-n".
grep -n
Jedna riječ
Ako se koristi zastavica "-w", grep će obrazac tretirati kao cijelu riječ.
grep -w
Ograničavanje grep pretraživanja
Grep omogućuje određivanje broja redaka za pretraživanje u datoteci. Ova je metoda korisna ako imate posla s velikom datotekom (poput sistemskog dnevnika). Koristite zastavicu "-m".
grep -m
Rekurzivno pretraživanje
To je jedna od najkorisnijih značajki koju grep nudi za intenzivnu upotrebu. Grep može rekurzivno pretraživati direktorij i pronaći sva podudaranja svih datoteka s kojima se suočava.
grep -RIli,
grep -r
Često pronalazim upotrebu ove rekurzivne funkcije zajedno sa zastavicom "-l".
Tihi način rada
Grep se može pokretati u "tihom" načinu. Kada radi u "tihom" načinu rada, grep neće ispisati izlaz na terminal. Umjesto toga, vratit će se 0 (barem je pronađeno podudaranje) ili 1 (nije pronađeno podudaranje).
grep -qodjek $?
Regex
Grep također dopušta pretraživanja regularnih izraza (regularni izraz). To dodaje potpuno novu razinu složenosti i upotrebljivosti grepa kao alata za pretraživanje.
Na primjer, zagradama možete istovremeno pretraživati i "previše" i "dva".
mačka ~ / Desktop / gpl-3.0.txt | grep t [wo] o
Sljedeći će primjer ispisati redak samo ako se podudaranje dogodi na samom početku retka.
grep ^ GNU ~ / Desktop / gpl-3.0.txt
Što se tiče podudaranja završetka, upotrijebite ovaj.
grep vam $ ~ / Desktop / gpl-3.0.txt
Ako želite koristiti Perl regularni izraz, upotrijebite zastavicu “-P”. Uzorak će tretirati kao Perl regex.
grep -PZavršne misli
Grep nudi mnoštvo načina za prilagodbu funkcije pretraživanja. Dostupnost regularnog izraza otvara potpuno novi horizont za potencijalnu upotrebu grepa. Super je stvar što možete koristiti i generalni i Perl regex; s kim god se osjećate ugodno.
Za najdetaljnije objašnjenje uvijek potražite man stranicu.
čovječe grep
Živjeli!