grep
Wikipedia
| Tätä artikkelia tai sen osaa on pyydetty parannettavaksi, koska se ei täytä Wikipedian laatuvaatimuksia. Voit auttaa Wikipediaa parantamalla artikkelia. Lisää tietoa saattaa olla keskustelusivulla. Tarkennus: Säännöllisten lausekkeiden syntaksi |
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ä.
Sisällysluettelo |
Säännöllisten lausekkeiden syntaksi [muokkaa]
Klassinen grep [muokkaa]
. 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]
+ 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]
^$ tyhjä rivi
Komentoriviparametrit [muokkaa]
-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]
Etsii tiedostosta #tiedosto kaikki tyhjät rivit ja printtaa ne kaikki oletustulostusvirtaan:
$ grep -e '^$' #tiedosto
Sivulta puuttuu