Grep kasutamine
Autor
Petri Hütt
Filip Fjodorov AK21 ver2.0
Sissejuhatus
Grep on üks enimkasutatavaid utiliite, kus saab väga efektiivselt kasutada regulaaravaldisi. Grep on käsu rea teksti otsingu vahend mis oli originaalselt loodud Unixile. Selle nimi tuleneb ed käsust g/r/e/p (global / regular expression / print). Tema eesmärgiks on otsida täpselt seda mida tal palutakse olenevalt käsust. grep, egrep, fgrep, rgrep - väljastab sisendisse antust kõik read, mis sisaldavad otsitud tekstifraasi või regulaaravaldist.
Lihtsamalt öeldes kasutatakse grep'i faili SISU järgi otsimiseks/vaatamiseks - "grep MIDA KUST"
Grep süntaks
grep [-võtmed] regexp [FAIL...]
Võtmed
- -i, --ignore-case - Otsing ei ole enam tähtede suhtes tõstutundlik.
- -w, --word-regexp - Otsib täpselt seda sõna, mille otsingusse kirjutad.
- -c, --count - Loeb ära, mitmes reas sinu otsitav sõna esines.
- -n, --line-number - Lisab vastele ka rea numbri.
- -r, --recursive - Uurib ka alamkatalooge.
- -v, --invert-match - Vastupidine. Väljastab read, mis ei sisalda otsitut.
- -l, --files-with-matches Näidata ainult nende failide nimed ühekordselt, milles leidub sobivaid ridu
- -q, --quiet, --silent - tulemust ei väljastata, töötatakse välja ainult lõpetamiskood (0 - leidus, 1 - ei leidunud, 2 - viga)
- -s, --no-messages Peida tõrketeateid puduvate või mitte loetavate failide kohta.
Näited
Kui tahad otsida sõna "root" failist /etc/passwd, siis kasuta käsku
grep root /etc/passwd
Tulemus: otsib sõna "root" failist /etc/passwd
Grep'i võib sundida ignoreerima suuri ja väikeseid tähti. Seega, kui me otsime sõna, kus on suured ja väikesed tähed (nt. Boo, bOO, BOO jne.), siis kasutame grep'i järel võtit -i
grep -i boo /etc/passwd
Kui sa otsid näiteks sõna "boo", siis tulemusena võid leida ka sõnad fooboo, boo123 vms. Kui aga tahad leida täpselt seda, mida otsingusse kirjutad, siis tuleb kasutada võtit -w
grep -w boo /etc/passwd
Kuid kui otsitavas failis olemas sõna "boo" koos kriipsuga, siis see langeb otsingu parameetrite alla. Näide: "boo-aa". Selleks, et tulemusena saada ainult sõna boo, vaja kasutada võtit -x
grep -x boo /etc/passwd
Kui tahad otsida kataloogist ning ka kõikidest alamkataloogidest, siis pead kasutama grep'i järel võtit -r
grep -r "192.168.1.5" /etc/
Tulemus: otsime fraasi "192.168.1.5" kataloogist /etc/ ning kõikidest selle alamkataloogidest.
Mitme erineva sõna otsimiseks kasutame egrep'i.
egrep "peeter|kala|root" /etc/passwd
Tulemus: ühe käsuga otsime kolme erinevat sõna
Kui huvitab, mitmes erinevas reas otsitav sõna esineb, siis kasutame võtit -c.
grep -c false /etc/passwd
Kui tahame aga näha numbriliselt, mitmendas reas sõna esineb siis kasutame võtit -n
grep -n false /etc/passwd
Võti –v muudab otsingu parameetreid nii, et ainult see üks sõna mida te ei taha eraldatakse nimekirjast.
grep -v peeter /etc/passwd
Tulemus: väljastab kõik read, välja arvatud rea, kus esines sõna "peeter"
Grep'i kasutatakse üsna tihti koos torudega. Mõned näited:
dmesg | egrep "(s|h)d[a-z]"
Tulemus: info kõvaketaste kohta
cat /proc/cpuinfo | grep -i "Model"
Tulemus: väljastab info protsessori (CPU) kohta
Et tulemus eriti hästi silma paistaks, saame väljastada otsitava sõna värviliselt
grep --color peeter /etc/passwd
Otsida võib ka keerulisemaid teksti kombinatsioone. Alljärgnev käsk prindib välja kõik read mis algavad ’p’ tähega, sellele järgnev ükskõik mis täht ja lõpuks ’ssword’.
grep ^p.ssword /etc/passwd
Abi
man grep
Allikad
http://viki.vkhk.ee/index.php/Grep
http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_04_02.html
http://www.cyberciti.biz/faq/grep-regular-expressions/
http://www.cyberciti.biz/faq/howto-use-grep-command-in-linux-unix/
https://wiki.itcollege.ee/index.php/Regulaaravaldised
http://enos.itcollege.ee/~jpoial/java/Unix_lyhikonspekt.html