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!