grep

Wikipedia
Loikkaa: valikkoon, hakuun


grep (search globally for a regular expression and print) on Unix-käyttöjärjestelmän komentoriviohjelma, joka etsii säännöllisillä lausekkeilla määriteltyjä merkkijonoja tiedostoista. Ohjelman nimi on peräisin ed-tekstieditorin komennosta g/re/p.

Tietokoneslangissa greppaus tai greppaaminen tarkoittaa yleensä mitä tahansa merkkijonojen etsimistä.

Säännöllisten lausekkeiden syntaksi[muokkaa | muokkaa wikitekstiä]

Klassinen grep[muokkaa | muokkaa wikitekstiä]

. mikä tahansa merkki paitsi rivinvaihto
* edeltävä merkki 0-N kertaa
[ ] mikä tahansa sulkujen sisällä olevista merkeistä
[A-Z] merkit A...Z
[^ ] ei merkki esimerkiksi [^x] tarkoittaa EI ”x”
^ rivin alku
$ rivin loppu
(lauseke) alilausekkeen alku. Tämä on
epäsäännöllinen laajennus eikä aina hyvin määritelty.
\n alilausekkeen vastaama merkkijono numero n.
Esimerkiksi ”\(a??\)\1" vastaa merkkijonoja
”abcbc” ja ”adede” mutta ei ”abcde”.

POSIX-laajennukset[muokkaa | muokkaa wikitekstiä]

+ edeltävä merkki 1-N kertaa
? edeltävä merkki 0-1 kertaa
| tai
a{m}    tasan m kpl a
a{m,} vähintään m kpl a
a{m,n} m...n kpl a
[:alpha:] kirjain käytetyillä maa-asetuksilla
[:alnum:] kirjain tai numero käytetyillä maa-asetuksilla
[:cntrl:], [:digit:], [:graph:], [:lower:],
[:print:], [:punct:], [:space:], [:upper:]
ja [:xdigit:] erilaisia ryhmittelyjä
\w sama kuin [:alnum:]
\W sama kuin [^[:alnum]]

Haettaessa lauseketta a* tiedostosta grep-ohjelmalla, haku löytäisi ainakin tyhjän merkkijonon joka riviltä, ja tulostaisi siis kaikki rivit. On myös huomattava, että haku säännöllisillä lausekkeilla on ahne, ja löytää riviltä aina pisimmän vastaavan merkkijonon.

Erikoisuudet yms.[muokkaa | muokkaa wikitekstiä]

^$ tyhjä rivi

Komentoriviparametrit[muokkaa | muokkaa wikitekstiä]

-c oletustulostusvirtaan tulostetaankin osumia tuottavien rivien lukumäärä
-e kun halutaan löytää useita säännöllisiä lausekkeita ne täytyy eritellä e-valitsimilla, 
esimerkiksi -e 'Wikipedia' -e 'Wikimedia' 
-F löydetään ne rivit, joissa on täsmälleen annettu merkkijono eli tämä valitsin poistaa
erikoismerkeiltä (esimerkiksi . * { $ ^ ) niiden merkityksen
-i mätsäys ei tee eroja isojen ja pienten kirjainten välillä (ignore-case)
-l oletustulostusvirtaan tulostetaan vain niiden tiedostojen nimet, jotka ovat tuottaneet osumia
-n näyttää myös sen tiedoston rivin numerot, joissa osumia on löytynyt
-v oletustulostusvirtaan tulostetaankin kaikki rivit, jotka eivät vastaa 
annettua säännöllistä lauseketta
-w mätsää rivin jos ja vain jos annettu lauseke esiintyy siinä kokonaisuudessaan sanana. 
Esimerkiksi lauseke 'a\{1,\}' tuottaisi osuman rivissä 'bbb aaaa bb' mutta ei rivissä 'bbb aaaab b'
-x mätsää vain ne rivit, jotka ovat kokonaisuudessaan annettujen säännöllisten lausekkeiden 
mukaisia eli käytännössä sama kuin '^[säännöllinen lauseke]$'

Esimerkkejä[muokkaa | muokkaa wikitekstiä]

Etsii tiedostosta #tiedosto kaikki tyhjät rivit ja printtaa ne kaikki oletustulostusvirtaan:

$ grep -e '^$' #tiedosto

Katso myös[muokkaa | muokkaa wikitekstiä]

Tämä tietotekniikkaan liittyvä artikkeli on tynkä. Voit auttaa Wikipediaa laajentamalla artikkelia.