Grep kasutamine: Difference between revisions
No edit summary |
|||
Line 27: | Line 27: | ||
* -v, --invert-match - Vastupidine. Väljastab read, mis ei sisalda otsitut. | * -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 | * -l, --files-with-matches Näidata ainult nende failide nimed ühekordselt, milles leidub sobivaid ridu | ||
* -L, --files-without-match Näidata ainult nende failide nimed, milles ei leidu sobivaid ridu | |||
* -q, --quiet, --silent - tulemust ei väljastata, töötatakse välja ainult lõpetamiskood (0 - leidus, 1 - ei leidunud, 2 - viga) | * -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. | * -s, --no-messages Peida tõrketeateid puduvate või mitte loetavate failide kohta. | ||
* -color, -- märgib vastavad read värviga | |||
* -x, --line-regexp Näidata ainult need tulemused, mis täiesti identsed otsitava reale. | |||
=Näited= | =Näited= | ||
Line 97: | Line 100: | ||
<pre>grep ^p.ssword /etc/passwd</pre> | <pre>grep ^p.ssword /etc/passwd</pre> | ||
Et väljastada ainult faili nimi, kust rida boo pärit, on võti -l, | |||
<pre>grep -l 'boo' *</pre> | |||
Aga selleks, et väljastada faili nimi, kus boo puudub, on võti -L, | |||
<pre>grep -L 'boo' *</pre> | |||
=Abi= | =Abi= |
Revision as of 23:48, 15 November 2017
Autorid
Petri Hütt
Filip Fjodorov AK21 ver2.0
Sissejuhatus
Grep on üks enimkasutatavaid utiliite, kus saab väga efektiivselt kasutada regulaaravaldisi. [1] 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. [2] 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...]
Otsida tekstifaili(de)st read, mis rahuldavad antud regulaarset avaldist ("vastavad etteantud mustrile"). Vaikimisi on sisendiks standardsisend, väljundiks standardväljund. Regulaaravaldis on soovitav kirjutada ülakomade vahele, et segadust metamärkidega (näit. tärn) vältida. [3]
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
- -L, --files-without-match Näidata ainult nende failide nimed, milles ei leidu 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.
- -color, -- märgib vastavad read värviga
- -x, --line-regexp Näidata ainult need tulemused, mis täiesti identsed otsitava reale.
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
Et väljastada ainult faili nimi, kust rida boo pärit, on võti -l,
grep -l 'boo' *
Aga selleks, et väljastada faili nimi, kus boo puudub, on võti -L,
grep -L 'boo' *
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/