Kako koristiti naredbu Grep u Linuxu [12 korisnih primjera]


Jeste li se ikada suočili sa zadatkom traženja određenog niza ili uzorka u datoteci, a da nemate pojma gdje da počnete tražiti? Pa onda, evo komande grep u pomoć!

grep je moćan pretraživač uzoraka fajlova koji dolazi opremljen u svakoj distribuciji Linuxa. Ako iz bilo kog razloga nije instaliran na vašem sistemu, možete ga lako instalirati preko vašeg upravitelja paketa kao što je prikazano.

sudo apt install grep         [On Debian, Ubuntu and Mint]
sudo yum install grep         [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux]
sudo emerge -a sys-apps/grep  [On Gentoo Linux]
sudo apk add grep             [On Alpine Linux]
sudo pacman -S grep           [On Arch Linux]
sudo zypper install grep      [On OpenSUSE]    

Otkrio sam da je najlakši način da navlažite noge pomoću grep komande da jednostavno zaronite i koristite neke primjere iz stvarnog svijeta.

1. Pretražite i pronađite datoteke u Linuxu

Recimo da ste upravo instalirali novu kopiju novog Ubuntu-a na svoju mašinu i da ćete pokušati Python skriptiranje.

Pretražili ste web tražeći tutorijale, ali vidite da se koriste dvije različite verzije Pythona i da ne znate koju verziju Pythona je instalirao na Ubuntu, ili ako je instalirao bilo koji modul.

Jednostavno pokrenite sljedeću naredbu dpkg sa grep kao što je prikazano:

dpkg -l | grep -i python

Prvo smo pokrenuli dpkg –l, koji navodi instalirane *.deb pakete na vašem sistemu. Drugo, taj izlaz smo prenijeli na grep -i python, koji jednostavno kaže “idi na grep i filtriraj i vrati sve s ‘python’ u njemu. ”

Opcija -i je tu da ignoriše velika i mala slova, jer je grep osjetljiv na velika i mala slova. Korištenje opcije -i je dobra navika za ulazak, osim ako, naravno, ne pokušavate zakucati konkretnije pretraživanje.

2. Pretražujte i filtrirajte datoteke u Linuxu

grep se također može koristiti za pretraživanje i filtriranje unutar pojedinačnih datoteka ili više datoteka. Uzmimo ovaj scenario:

Imate problema sa svojim Apache web serverom i obratili ste se jednom od mnogih sjajnih foruma na mreži tražeći pomoć.

Ljubazna duša koja vam odgovara zamolila vas je da objavite sadržaj vašeg /etc/apache2/apache2.conf fajla. Ne bi li vama, momku koji vam pomaže i svima koji to čitaju bilo lakše da uklonite sve komentarisane redove? Pa, možeš! Samo pokrenite ovo:

grep -v ^\# /etc/apache2/apache2.conf | grep .

Opcija -v govori grep da invertuje svoj izlaz, što znači da umjesto štampanja odgovarajućih linija, uradi suprotno i ispiše sve redove koji se ne podudaraju s izrazom, u ovom slučaju, # komentarisani redovi.

Imajte na umu da smo također koristili grep . na kraju kako bismo sakrili izlaz svih praznih linija. Na ovaj način vidimo samo konfiguracijske postavke u našem terminalu.

3. Pronađite sve .mp3 datoteke u Linuxu

grep može biti vrlo koristan za filtriranje iz stdouta. Na primjer, recimo da imate cijeli folder pun muzičkih datoteka u gomili različitih formata.

Želite pronaći sve datoteke *.mp3 izvođača JayZ, ali ne želite nijednu od remiksovanih pjesama. Korištenje naredbe find s nekoliko grep cijevi će učiniti trik:

find . -name “*.mp3” | grep –i JayZ | grep –vi “remix”

U ovom primjeru koristimo find za ispis svih fajlova sa ekstenzijom *.mp3, dovodeći ih u grep –i za filtriranje izbacite i odštampajte sve fajlove sa imenom “JayZ ”, a zatim drugu cev do grep –vi koja filtrira i ne ispisuje sve nazive datoteka sa nizom (u svakom slučaju) “remiks”.

4. Prikažite broj redova prije ili poslije niza za pretraživanje

Još nekoliko opcija su prekidači -A i -B, koji prikazuju podudarni red i određeni broj redova koji dolaze prije ili poslije niza za pretraživanje.

Dok man stranica daje detaljnije objašnjenje, smatram da je najlakše zapamtiti opcije kao -A=nakon i -B=< jako>prije:

ifconfig | grep -A 4 inet
ifconfig | grep -B 2 UP

5. Ispisuje broj linija oko podudaranja

Opcija -C grep je slična, ali umjesto da ispisuje redove koji dolaze prije ili poslije niza, ona ispisuje linije u bilo kojem smjeru:

ifconfig | grep -C 2 lo

 TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 15314  bytes 1593769 (1.5 MB)
        RX errors 0  dropped 0  overruns 0  frame 0

6. Prebrojite broj utakmica

Slično slanju niza grep u broj riječi (wc komanda), ugrađena opcija grep može učiniti isto za vas:

ifconfig | grep -c inet6

7. Pretražujte datoteke prema datom nizu u Linuxu

Opcija –n za grep je veoma korisna prilikom otklanjanja grešaka u fajlovima tokom kompajliranja grešaka. Prikazuje broj reda u datoteci datog niza za pretraživanje:

grep -n "main" setup.py

8. Pretražujte niz rekurzivno u svim direktorijima

Ako želite tražiti niz u trenutnom direktoriju zajedno sa svim poddirektorijumima, možete odrediti opciju –r za rekurzivno pretraživanje:

grep -r “function” *

9. Potražite cijeli uzorak

Prosljeđivanje opcije -w u grep traži cijeli uzorak koji se nalazi u nizu. Na primjer, koristeći:

ifconfig | grep -w "RUNNING"

Ispisat će red koji sadrži uzorak u navodnicima. S druge strane, ako pokušate:

ifconfig | grep -w "RUN"

Ništa neće biti vraćeno jer ne tražimo obrazac, već cijelu riječ.

10. Pretražujte niz u Gzipiranim datotekama

Zaslužuju nekoliko spomena grepovi derivati. Prvi je zgrep, koji se, slično kao zcat, koristi na gzipiranim datotekama. Uzima iste opcije kao grep i koristi se na isti način:

zgrep -i error /var/log/syslog.2.gz

11. Uskladite regularne izraze u datotekama

Komanda egrep je još jedan derivat koji je skraćenica za “Prošireni globalni regularni izraz”. Prepoznaje dodatne meta-znakove izraza kao što je at + ? | i ().

Naredba egrep je vrlo korisna za pretraživanje izvornih datoteka i drugih dijelova koda, ako se ukaže potreba. Može se pozvati iz uobičajenog grep specificiranjem opcije -E.

grep -E

12. Pretražite niz fiksnog uzorka

Naredba fgrep pretražuje datoteku ili listu datoteka za fiksni niz uzoraka. To je isto kao grep -F. Uobičajeni način korištenja fgrep je da mu se proslijeđuje datoteka uzoraka:

fgrep –f file_full_of_patterns.txt file_to_search.txt

Ovo je samo početna tačka sa grep, ali kao što verovatno možete da vidite, ona je od neprocenjive vrednosti za razne svrhe. Osim jednostavnih naredbi u jednom redu koje smo implementirali, grep se može koristiti za pisanje moćnih cron poslova i robusnih shell skripti, za počni.

Budite kreativni, eksperimentirajte s opcijama na man stranici i osmislite grep izraze koji služe vašim vlastitim svrhama!