Grep kasutamine: Difference between revisions

From ICO wiki
Jump to navigationJump to search
No edit summary
 
(14 intermediate revisions by the same user not shown)
Line 1: Line 1:
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.  
=Autorid=
Petri Hütt
 
Filip Fjodorov AK21 ver2.0
 
= Sissejuhatus =
 
Grep on üks enimkasutatavaid utiliite, kus saab väga efektiivselt kasutada regulaaravaldisi. <ref>[https://www.computerhope.com/unix/ugrep.htm] www.computerhope.com Vaadatud: 22.10.2017</ref>
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. <ref>[http://veeremaa.tpt.edu.ee/2011/textedit.htm] veeremaa.tpt.edu.ee Vaadatud: 1.11.2017</ref>
'''grep''', '''egrep''', '''fgrep''', '''rgrep''' - väljastab sisendisse antust kõik read, mis sisaldavad otsitud tekstifraasi või regulaaravaldist.
'''grep''', '''egrep''', '''fgrep''', '''rgrep''' - väljastab sisendisse antust kõik read, mis sisaldavad otsitud tekstifraasi või regulaaravaldist.


Line 7: Line 15:
=Grep süntaks=
=Grep süntaks=
<pre>grep [-võtmed] regexp [FAIL...]</pre>
<pre>grep [-võtmed] regexp [FAIL...]</pre>
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. <ref>[http://enos.itcollege.ee/~jpoial/java/Unix_lyhikonspekt.html] enos.itcollege.ee Vaadatud: 22.10.2017</ref>


=Võtmed=
=Võtmed=
Line 16: 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.
* -H, --with-filename Printib iga sobivale reale failinimi. See on vaikimisi, kui otsinguks on mitu faili.
* -h, --no-filename Peatab failinimede eesliide väljundisse. See on vaikimisi, kui otsida on ainult üks fail (või ainult standard sisend).


=Näited=
=Näited=
Kui tahad otsida sõna "root" failist /etc/passwd, siis kasuta käsku
1. Trükitab rakendussõnumit, milles lühidalt võetakse kokku käsurea valikud ja veateate aadress, seejärel lahkub.
<pre>grep --help</pre>
 
2. Trükib grep versiooni number standardväljundvoogu. See versiooni number tuleks lisada kõigisse veaparandustesse raportisse.
<pre>grep --version</pre>
 
3.Kui tahad otsida sõna "root" failist /etc/passwd, siis kasuta käsku


<pre>grep root /etc/passwd</pre>
<pre>grep root /etc/passwd</pre>
Line 26: Line 48:
'''Tulemus:''' otsib sõna "root" failist /etc/passwd
'''Tulemus:''' otsib sõna "root" failist /etc/passwd


 
4. 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 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


<pre>grep -i boo /etc/passwd</pre>
<pre>grep -i boo /etc/passwd</pre>


 
5. 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
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, mille otsingusse kirjutad, siis tuleb kasutada võtit -w


<pre>grep -w boo /etc/passwd</pre>
<pre>grep -w boo /etc/passwd</pre>


Kuid kui otsitavas failis olemas sõna "boo" koos kriipsuga, siis see langeb otsingu parameetrite alla. Näide: "boo-aa".  
6. 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   
Selleks, et tulemusena saada ainult sõna boo, vaja kasutada võtit -x   


<pre>grep -x boo /etc/passwd</pre>
<pre>grep -x boo /etc/passwd</pre>


Kui tahad otsida kataloogist ning ka kõikidest alamkataloogidest, siis pead kasutama grep'i järel võtit -r
7. Kui tahad otsida kataloogist ning ka kõikidest alamkataloogidest, siis pead kasutama grep'i järel võtit -r


<pre>grep -r "192.168.1.5" /etc/</pre>
<pre>grep -r "192.168.1.5" /etc/</pre>
Line 47: Line 67:
'''Tulemus:''' otsime fraasi "192.168.1.5" kataloogist /etc/ ning kõikidest selle alamkataloogidest.  
'''Tulemus:''' otsime fraasi "192.168.1.5" kataloogist /etc/ ning kõikidest selle alamkataloogidest.  


 
8. Mitme erineva sõna otsimiseks kasutame egrep'i.
Mitme erineva sõna otsimiseks kasutame egrep'i.


<pre>egrep "peeter|kala|root" /etc/passwd</pre>
<pre>egrep "peeter|kala|root" /etc/passwd</pre>
Line 54: Line 73:
'''Tulemus:''' ühe käsuga otsime kolme erinevat sõna
'''Tulemus:''' ühe käsuga otsime kolme erinevat sõna


 
9. Kui huvitab, mitmes erinevas reas otsitav sõna esineb, siis kasutame võtit -c.  
Kui huvitab, mitmes erinevas reas otsitav sõna esineb, siis kasutame võtit -c.  
<pre>grep -c false /etc/passwd</pre>
<pre>grep -c false /etc/passwd</pre>


 
10. Kui tahame aga näha numbriliselt, mitmendas reas sõna esineb siis kasutame võtit -n
Kui tahame aga näha numbriliselt, mitmendas reas sõna esineb siis kasutame võtit -n
<pre>grep -n false /etc/passwd</pre>
<pre>grep -n false /etc/passwd</pre>


 
11. Võti –v muudab otsingu parameetreid nii, et ainult see üks sõna mida te ei taha eraldatakse nimekirjast.  
Võti –v muudab otsingu parameetreid nii, et ainult see üks sõna mida te ei taha eraldatakse nimekirjast.  
<pre>grep -v peeter /etc/passwd</pre>
<pre>grep -v peeter /etc/passwd</pre>
'''Tulemus:''' väljastab kõik read, välja arvatud rea, kus esines sõna "peeter"
'''Tulemus:''' väljastab kõik read, välja arvatud rea, kus esines sõna "peeter"


 
12. Grep'i kasutatakse üsna tihti koos torudega. Mõned näited:
Grep'i kasutatakse üsna tihti koos torudega. Mõned näited:
<pre>dmesg | egrep "(s|h)d[a-z]"</pre>
<pre>dmesg | egrep "(s|h)d[a-z]"</pre>
'''Tulemus:''' info kõvaketaste kohta
'''Tulemus:''' info kõvaketaste kohta


13.
<pre>cat /proc/cpuinfo | grep -i "Model"</pre>
<pre>cat /proc/cpuinfo | grep -i "Model"</pre>


'''Tulemus:''' väljastab info protsessori (CPU) kohta
'''Tulemus:''' väljastab info protsessori (CPU) kohta


14. Et tulemus eriti hästi silma paistaks, saame väljastada otsitava sõna värviliselt
<pre>grep --color peeter /etc/passwd</pre>
15. 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’.
<pre>grep ^p.ssword /etc/passwd</pre>


Et tulemus eriti hästi silma paistaks, saame väljastada otsitava sõna värviliselt
16. Et väljastada ainult faili nimi, kust rida boo pärit, on võti -l,  
<pre>grep -l 'boo' *</pre>


<pre>grep --color peeter /etc/passwd</pre>
17. Aga selleks, et väljastada faili nimi, kus boo puudub, on võti -L,
<pre>grep -L 'boo' *</pre>  


18. Vaatame konfiguratsiooni failid ilma kommentaarita.
<pre>cat konf_failinimi | grep -vE "^#|^$"</pre>


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’.  
19. Võtame välja tühjad read.
<pre>grep -v '^$' input.txt > output.txt</pre>


<pre>grep ^p.ssword /etc/passwd</pre>
20. Mitte midagi ei kirjuta standardväljundile.
<pre>grep -q -v peeter /etc/passwd</pre>


=Abi=
=Abi=
Line 102: Line 128:
http://www.cyberciti.biz/faq/howto-use-grep-command-in-linux-unix/
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


http://veeremaa.tpt.edu.ee/2011/textedit.htm


=Autor=
Petri Hütt
Filip Fjodorov AK21 ver2.0


[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]

Latest revision as of 13:29, 22 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.
  • -H, --with-filename Printib iga sobivale reale failinimi. See on vaikimisi, kui otsinguks on mitu faili.
  • -h, --no-filename Peatab failinimede eesliide väljundisse. See on vaikimisi, kui otsida on ainult üks fail (või ainult standard sisend).

Näited

1. Trükitab rakendussõnumit, milles lühidalt võetakse kokku käsurea valikud ja veateate aadress, seejärel lahkub.

grep --help

2. Trükib grep versiooni number standardväljundvoogu. See versiooni number tuleks lisada kõigisse veaparandustesse raportisse.

grep --version

3.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

4. 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

5. 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

6. 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

7. 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.

8. Mitme erineva sõna otsimiseks kasutame egrep'i.

egrep "peeter|kala|root" /etc/passwd

Tulemus: ühe käsuga otsime kolme erinevat sõna

9. Kui huvitab, mitmes erinevas reas otsitav sõna esineb, siis kasutame võtit -c.

grep -c false /etc/passwd

10. Kui tahame aga näha numbriliselt, mitmendas reas sõna esineb siis kasutame võtit -n

grep -n false /etc/passwd

11. 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"

12. Grep'i kasutatakse üsna tihti koos torudega. Mõned näited:

dmesg | egrep "(s|h)d[a-z]"

Tulemus: info kõvaketaste kohta

13.

cat /proc/cpuinfo | grep -i "Model"

Tulemus: väljastab info protsessori (CPU) kohta

14. Et tulemus eriti hästi silma paistaks, saame väljastada otsitava sõna värviliselt

grep --color peeter /etc/passwd

15. 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

16. Et väljastada ainult faili nimi, kust rida boo pärit, on võti -l,

grep -l 'boo' *

17. Aga selleks, et väljastada faili nimi, kus boo puudub, on võti -L,

grep -L 'boo' *

18. Vaatame konfiguratsiooni failid ilma kommentaarita.

cat konf_failinimi | grep -vE "^#|^$"

19. Võtame välja tühjad read.

grep -v '^$' input.txt > output.txt

20. Mitte midagi ei kirjuta standardväljundile.

grep -q -v peeter /etc/passwd

Abi

man grep


Allikad

http://viki.pingviin.org/Grep

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/

  1. [1] www.computerhope.com Vaadatud: 22.10.2017
  2. [2] veeremaa.tpt.edu.ee Vaadatud: 1.11.2017
  3. [3] enos.itcollege.ee Vaadatud: 22.10.2017