Grep (searchglobally for aregularexpression andprint) onUnix-käyttöjärjestelmänkomentoriviohjelma, joka etsiisäännöllisillä lausekkeilla määriteltyjämerkkijonojatiedostoista.[1] Ohjelman nimi on peräisined-tekstieditorin komennostag/re/p.[1] Ohjelman on kehittänytKen Thompson.[1] Ohjelma vaikutti myössed-rivieditorin kehitykseen.[2]
Tietokoneslangissagreppaus taigreppaaminen tarkoittaa yleensä mitä tahansa merkkijonojen etsimistä.
Ohjelma on peräisin alkuperäisestä Unixista, jonka piti toimiaPDP-11 -tietokoneella pienellä muistimäärällä.Ken Thompson tekied-ohjelman tekstin muokkaamiseen primitiivisillä näyttölaitteilla ilman kursoria. ed salli säännöllisten lausekkeiden avulla, jossa 'g' tarkoitti hakua, 'p' tulostamista ja 're' lauseketta ja tämä esitettiin muodossa:g/re/p. Lee McMahon halusi ohjelman, jolla pystyi hakemaan tiedostosta merkkijonoja ja ongelmana oli, että tiedosto oli tuolloin liian suuri tietokoneenmuistimäärälle jotta sitä olisi voitu avata editorissa. Tämän johdosta Thompson teki ohjelman grep.[1]Alfred V. Aho ja Margaret J. Corasick kehittivätAho-Corasick -algoritmin merkkijonojen hakemiseen, joka toteutettiin fgrep-versioon ohjelmasta.[3][4][5]
grep-ohjelmasta on useita toteutuksia:[6]
GNU grep käyttääBoyer-Moore -algoritmia, joka ensin hakee haettavan merkkijonon ensimmäisen merkin ja hakutaulun avulla päättelee miten pitkälle eteenpäin se voi hypätä jos merkki ei täsmää haettuun.[7][10]
Yleinen tapa on liittää ohjelman käyttö komentoriviputkeen:
$ ps | grep bash
Tämä tapaus esittääps ohjelman antamasta prosessilistauksesta rivit, joilla esiintyy sanabash.
Etsii tiedostosta#tiedosto kaikki tyhjät rivit ja tulostaa ne kaikki oletustulostusvirtaan:
$ grep -e '^$' #tiedosto