GREP(1) Kyttjn sovellusohjelmat GREP(1)
grep, egrep, fgrep - tulostaa tiedoston rivit, joissa esiintyy mritelty
merkkijono
grep [-AB] nro] [-CEFGVbchiLlnqsvwxyUu] [-e merkkijono | -f tiedosto]
[--extended-regexp] [--fixed-strings] [--basic-regexp] [--reg-
exp=MERKKIJONO] [--file=TIEDOSTO] [--ignore-case] [--word-regexp]
[--line-regexp] [--line-regexp] [--no-messages] [--revert-match]
[--version] [--help] [--byte-offset] [--line-number] [--with-filename]
[--no-filename] [--quiet] [--silent] [--files-without-match] [--files-
with-matcces] [--count] [--before-context=NRO] [--after-context=NRO]
[--context] [--binary] [--unix-byte-offsets] tiedostot...
Grep-komento etsii nimetyist tiedostoista rivej, joissa esiintyy
mritelty merkkijono. (Jollei tiedostoja ole nimetty tai jos on nimetty
tiedostonimi - , grep etsii merkkijonoa vakiosytteest). Oletusarvois-
esti grep tulostaa rivit, joissa esiintyy mritelty merkkijono.
Grep-komennosta on olemassa kolme muunnelmaa, joita voidaan kytt seu-
raavien valitsimien kanssa.
-G, --basic-regexp
Tulkitsee merkkijonon tavallisena snnllisen lausekkeena (katso
alempaa). Tm on oletusarvona.
-E, --extended-regexp
Tulkitsee merkkijonon laajennettuna snnllisen lausekkeena (katso
alempaa).
-F, --fixed-strings
Tulkitsee merkkijonon merkkijonojen listana, jotka on erotettu
toisistaan rivinvaihdoilla, ja joista mik tahansa ky etsittvksi
sanaksi.
Lisksi on olemassa kaksi muunnelmaa, egrep ja fgrep. Egrep on saman-
tyyppinen (mutta ei tysin identtinen) kskyn grep -E kanssa ja se on mys
yhteensopiva vanhan, historiallisen Unixin egrep:n kanssa. Fgrep on
vastaava komennon grep -F kanssa.
Kaikkia grep-komennon muunnelmia voidaan kytt seuraavien valitsimien
kanssa:
-nro Haun tulokset tulostetaan siten, ett haettua rivi ennen tai
jlkeen tulostetaan nro kappaletta rivej tiedostosta. Grep ei
kuitenkaan koskaan tulosta yhtn rivi enemmn kuin kerran.
-A nro , --after-context=NRO
Tulostaa nro kappaletta haetun rivin jlkeisi rivej.
-B nro , --before-context=NRO
Tulostaa nro kappaletta haettua rivi edeltvi rivej.
-C, --context
Sama kuin -2.
-V, --version
Tulostaa grep:n versionumeron virhetulosteeseen. Tm versionu-
mero tulisi mainita kaikissa virheraporteissa (katso alempaa).
-b, --byte-offset
Tulostaa tulosteen rivien alkuun tavujen mrn tiedoston alusta
ennen lytyneit merkkijonoja.
-c, --count
Est normaalin tulostuksen; tulostaa sen sijaan jokaisesta
tiedostosta rivien mrn, joista lytyy haettava merkkijono. Val-
itsimella -v, --revert-match (katso alempaa) toiminta on pinvas-
tainen; tulostetaan rivien mr, joista ei lydy haettavaa merkki-
jonoa.
-e merkkijono,--regexp=MERKKIJONO
Kyt merkkijono merkkijonoa; kyttkelpoinen merkkijonoille, jotka
alkavat merkill -.
-f tiedosto,--file=TIEDOSTO
Poimii merkkijonon tiedosto-nimisest tiedostosta.
-h, --no-filename
Est tiedostonimien tulostus tulosteen rivien alkuun, kun etsitn
useammasta kuin yhdest tiedostosta.
-i, --ignore-case
Jt huomiotta merkkien koko (esim. isot/pienet kirjaimet) merkki-
jonoissa ja sytttiedostoissa.
-L, --files-without-match
Est normaali tulostus; sen sijaan tulosta jokaisen tiedoston
nimi, josta ei lydy etsittv merkkijonoa. Etsint pttyy ensim-
miseen lydettyyn merkkijonoon.
-l, --files-with-matches
Est normaali tulostus; sen sijaan tulosta jokaisen tiedoston
nimi, josta lytyy etsittv merkkijono. Etsint pttyy ensimmiseen
lydettyyn merkkijonoon.
-n, --line-number
Tulosta jokaisen rivin rivinumero, josta lytyy mritelty merkki-
jono.
-q, --quiet
Hiljainen. Est normaali tulostus. Etsint pttyy ensimmiseen
osumaan.
-s, --silent
l tulosta virheilmoituksia tiedostoista, joita ei ole olemassa
tai tiedostoista, jotka eivt ole luettavissa.
-v, --revert-match
Muuttaa oletustoiminnan pinvastaiseksi; tulostaa rivit, joista
ei lydy mritelty merkkijonoa.
-w, --word-regexp
Tulosta vain ne rivit, joista lytyy tydellisesti kokonainen
etsittv merkkijono. Haettava merkkijono on joko oltava rivin
alussa, tai sit ennen on oltava merkki, joka ei ole kirjain,
numero tai alaviiva. Vaihtoehtoisesti merkkijono on oltava joko
rivin lopussa tai sen jlkeen on oltava merkki, joka ei ole kir-
jain, numero tai alaviiva.
-x, --line-regexp
Tulosta vain ne haun tulokset, jotka tydellisesti vastaavat koko
rivi.
-y Ei kytss oleva synonyymi valitsimelle -i.
-U, --binary
Ksittele tiedosto(j)a binritiedostona. Oletusarvoisesti MS-DOS-
ja MS-Windows -kyttjrjestelmiss grep mrittelee tiedoston tyypin
lukemalla sen alusta ensimmiset 32 kilotavua. Jos grep pttelee,
ett tiedosto on tekstitiedosto, se poistaa CR (carriage return)
-merkit eli rivinvaihtomerkit alkuperisest tiedostosta (jotta
snnlliset lausekkeet toimisivat oikein merkkien ^ ja $ kanssa).
Kyttmll valitsinta -U kytketn pois edell mainittu automaattinen
tiedostotyypin mrittelytoiminto. Tllin kaikki tiedostot luetaan
ja siirretn etsintmekanismiin sellaisenaan; eli jos tiedosto on
tekstitiedosto, jossa on CR/LF -merkit jokaisen rivin lopussa,
jotkut snnlliset lausekkeet eivt toimi. Tt valitsinta voi kytt
ainoastaan MS-DOS- ja MS-Windows -kyttjrjestelmiss.
-u, --unix-byte-offsets
Raportoi Unix-tyylisesti tavujen mrn tiedoston alusta ennen
lytyneit merkkijonoja. Tm valitsin aiheuttaa sen, ett grep
raportoi tavujen mrn, kuten tiedosto olisi Unix-tyylinen teksti-
tiedosto, eli josta CR-merkit on poistettu. Tm saa aikaan
tulokset, jotka ovat identtiset verrattuna tulokseen, jos grep
ajettaisiin Unix-koneella. Tll valitsimella ei ole vaikutusta,
ellei kytet samanaikaisesti -b valitsinta; sit tuetaan ainoas-
taan MS-DOS- ja MS-Windows -kyttjrjestelmiss.
Snnllinen lauseke on merkkijono, joka kuvailee tietyn merkkijonosarjan.
Snnlliset lausekkeet on muodostettu samalla tavalla kuin aritmeettiset
lausekkeet, yhdistmll pienempi lausekkeita kytten useita operaattore-
ita.
Grep ymmrt kahta erilaista snnllisten lausekkeiden syntaksia: `taval-
lista' ja `laajennettua.' GNU grep:n toiminnassa ei ole eroa kytettess
eri syntakseja. Muissa toteutuksissa tavalliset snnlliset lausekkeet
ovat vhemmn tehokkaita. Seuraava kuvaus sopii laajennettuihin snnl-
lisiin lausekkeisiin; eroavaisuudet tavallisiin snnllisiin
lausekkeisiin on koottu yhteenvedoksi myhemmin.
Snnlliset lausekkeet, jotka vastaavat yht merkki, ovat trkeit tykaluja.
Useimmat merkit, mukaanlukien kaikki kirjaimet ja numerot, ovat snnl-
lisi lausekkeita, jotka vastaavat itsen. Mit tahansa metamerkki, jolla
on erityinen merkitys voidaan kytt laittamalla sen eteen kenoviiva.
Merkkijonolista, joka on sulkujen [ ja ] sisll, vastaa mit tahansa
yksittist merkki kyseisell listalla. Jos listan ensimminen merkki on
^-merkki, se vastaa mit tahansa merkki, joka ei ole listalla.
Esimerkiksi snnllinen lauseke [0123456789] vastaa mit tahansa yht
yksinumeroista lukua. ASCII-merkkien alue voidaan mritell antamalla
ensimminen ja viimeinen merkki, erotettuna toisistaan tavuviivalla.
Lisksi on mritelty etukteen tiettyj merkkien luokkia. Niiden nimet
ovat itsens selittvi ja ne ovat [:alnum:], [:alpha:], [:cntrl:],
[:digit:], [:graph:], [:lower:], [:print:], [:punct:], [:space:],
[:upper:] ja [:xdigit:]. Esimerkiksi [[:alnum:]] tarkoittaa samaa kuin
[0-9A-Za-z]. Jlkimminen muoto on riippuvainen ASCII-merkkien koodauk-
sesta, kun taas aiempi muoto on siirrettvmpi. (Huomaa, ett kaksoispis-
teet ja sulkeet luokkien nimiss ovat osa nime ja ne on huomioitava.)
Monilla metamerkeill ei ole erityist merkityst, kun niit kytetn lis-
toissa. Ottaaksesi huomioon merkin ], aseta se ensimmiseksi listaan.
Samalla tavalla, ottaaksesi huomioon merkin ^, aseta se mihin tahansa
muualle kuin ensimmiseksi. Viimeiseksi, ottaaksesi huomioon merkin -,
aseta se viimeiseksi.
Piste . vastaa mit tahansa yht merkki. Symboli \w on synonyymi
merkinnlle [[:alnum:]] ja \W on synonyymi merkinnlle [^[:alnum]].
"Caret"-merkki ^ ja dollarimerkki $ ovat metamerkkej, jotka vastaavat
tyhji merkkej rivin alussa ja lopussa. Symbolit \< ja \> vastaavat
tyhj merkkijonoa sanan alussa ja lopussa. Symboli \b vastaa tyhj
merkkijonoa sanan alussa tai lopussa, ja \B vastaa tyhj merkkijonoa
mikli se ei ole sanan alussa tai lopussa.
Snnllisen lausekkeen jlkeen, joka vastaa yht merkki, voidaan kytt mit
tahansa monista toisto-operaattoreista:
? Edeltv kohta on valinnainen ja se etsitn enimmilln kerran.
* Edeltv kohta etsitn nolla tai useamman kerran.
+ Edeltv kohta etsitn kerran tai useammin.
{n} Edeltv kohta etsitn tasan n kertaa.
{n,} Edeltv kohta etsitn n tai useamman kerran.
{,m} Edeltv kohta on valinnainen ja se etsitn enintn m kertaa.
{n,m} Edeltv kohta etsitn vhintn n kertaa, mutta ei useammin kuin m
kertaa.
Kaksi snnllist lauseketta voidaan liitt toisiinsa; syntyv snnllinen
lauseke vastaa mit tahansa merkkijonoa, joka muodostetaan liittmll
kaksi merkkijonoa, jotka vastaavasti vastaavat yhteen liitettyj
lausekkeita.
Kaksi snnllist lauseketta voidaan liitt toisiinsa ns. putkitus-merkill
(infix) |; syntyv lauseke vastaa mit tahansa merkkijonoa, joka vastaa
jompaa kumpaa lauseketta.
Toistaminen ohittaa liittmisen, joka taas ohittaa vuorottelun. Kokon-
ainen lauseke voidaan laittaa sulkeisiin, jolla voidaan ohittaa nm
"ohitussnnt".
Takaisinviittaus \n, jossa n on yksinumeroinen luku, vastaa merkki-
jonoa, jota aikaisemmin etsittiin snnllisen lausekkeen n:ness
sulkulausekkeessa.
Tavallisissa snnllisiss lausekkeissa metamerkit ?, +, {, |, (, ja )
menettvt erityistarkoituksensa; kyt sen sijaan versioita, joissa on
kenoviiva edess \?, \+, \{, \|, \(, ja \).
Kskyss egrep metamerkki { menett erityistarkoituksensa; kyt sensijaan
\{.
Normaalisti ohjelman paluuarvo (tila ohjelman loputtua) on 0, jos on
lytynyt haettuja merkkijonoja ja 1 jos niit ei ole lytynyt. ( -v val-
itsin knt toiminnan.) Paluuarvo on 2, jos merkkijonossa oli virheit,
tiedostoja joita ei pystytty lukemaan tai muita jrjestelmvirheit.
Lhet bugiraportit osoitteeseen bug-gnu-utils [AT] prep.edu. Varmista
ennen lhettmist, ett ``grep''-sana mainitaan ``Subject:''-kentss.
Suuret toistomrt {m,n} rakenteessa voivat aiheuttaa sen, ett grep kytt
paljon muistia. Lisksi, tietyt muut vaikeaselkoiset snnlliset lausek-
keet tarvitsevat eksponentiaalisesti enemmn aikaa ja tilaa ja voivat
aiheuttaa sen, ett muisti loppuu.
Takaisinviittaukset ovat erittin hitaita ja voivat tarvita eksponenti-
aalisesti enemmn aikaa.
GNU Project 7. Huhtikuuta 1998 GREP(1)