.TH GREP 1 "1992 September 10" "GNU Project" .SH NÉV grep, egrep, fgrep \- mintához illeszkedő sorokat nyomtat .SH ÁTTEKINTÉS .B grep [ .BR \- [[ AB "] ]\c" .I "num" ] [ .BR \- [ CEFGVBchilnsvwx ] ] [ .B \-e ] .I minta | .BI \-f file ] [ .I fájlok... ] .SH LEÍRÁS .PP .B Grep a megnevezett bemeneti .I fájlok -ban a megadott .I mintá -hoz illeszkedő sorokat keres. Amennyiben nincs bemenő fájlnév megadva, vagy az a .B \- jel, a szabványos bemenetet olvassa. Alapértelmezés szerint .B grep a mintához illeszkedő sorokat kinyomtatja. .PP Három fő változata van a .BR grep -nek, melyeket a következő opciókkal szabályozhatunk: .PD 0 .TP .B \-G A .I mintá -t alap szabályos kifejezésként (basic regular expression) kezeli. Részletesebben lásd lentebb. Ez az alapértelmezett. .TP .B \-E A .I mintá -t bővített szabályos kifejezésként (extended regular expression) kezeli. Részletesebben lásd lentebb. .TP .B \-F A .I mintá -t fix stringekből álló listának veszi, melyek újsor-jelekkel vannak elválasztva, és amelyekből bármelyikhez való illeszkedést keressük. .LP Létezik továbbá két programváltozat: .B egrep és .B fgrep . .B Egrep hasonló, de nem azonos .BR "grep\ \-E" , -vel és kompatíbilis a történelmi Unix .BR egrep -pel. .B Fgrep azonos .BR "grep\ \-F" -fel. .PD .LP A .B grep minden változata megérti az alábbi opciókat: .PD 0 .TP .BI \- num Az illeszkedést mutató sorok környezetükkel együtt lesznek kinyomatatva, azaz ezen sorok előtt és utáni .I num számú sor is nyomtatásra kerül. Eközben a .B grep program sosem fog egy sort többször kinyomtatni, még akkor sem, ha ezek a környezetek átfedik egymást. .TP .BI \-A " num" Az illeszkedést mutató sorok utáni .I num sor is nyomtatásra kerül. .TP .BI \-B " num" Az illeszkedést mutató sorok előtti .I num sor is nyomtatásra kerül. .TP .B \-C Azonos .BR \-2 -vel. .TP .B \-V Kinyomtatja a .B grep verziószámát a szabványos hibakimenetre. Ezt a verziószámot célszerű csatolni minden hibajelentéshez. (Lásd lent.) .TP .B \-b A kimeneti sorok előtt kinyomtatja a bemeneti fájlon belüli offset értéket. (Azaz azt, hogy a sor hányadik bájttal kezdődik a fájl kezdete után.) .TP .B \-c Elhagyja a szokásos kimenetet, ehelyett az illeszkedést mutató sorok számát írja ki minden fájl esetére. A .B \-v opcióval (lásd lent), a nem illeszkedő sorokat számolja. .TP .BI \-e " minta" A .I mintá -t használja mintának. Hasznos, ha a minta .BR \- jellel kezdődik. .TP .BI \-f " fájl" A mintát a .IR fájl -ból veszi. .TP .B \-h Több fájlban való kereséskor elhagyja a kimeneten a fájlnevek sor eleji kiírását. .TP .B \-i Nem különbözteti meg a kis- és nagybetűket sem a .I mintá -ban, sem a bemeneti fájlban. .TP .B \-L Elhagyja a szokásos kimenetet, és csak azon fájlok neveit adja meg, amelyekből .I nem származna kimenet. .TP .B \-l Elhagyja a szokásos kimenetet, és csak azon fájlok neveit adja meg, amelyekből származna kimenet. .TP .B \-n A kimenet sorai elején megadja a sor bemeneti fájlon belüli számát. .TP .B \-q Csendes (quiet) üzemmód: elhagyja a normális kimenetet. (Ilyenkor a .B grep -nek csak a visszatérési értéke ad információt.) .TP .B \-s Elhagyja a nemlétező vagy olvashatatlan fájlokról szóló hibajelentéseket. .TP .B \-v Megfordítja az illeszkedés értelmét: a mintához nem illeszkedő sorokat választja ki. .TP .B \-w Csak azokat a sorokat választja ki, amelyekben az illeszkedés teljes szavakból származik. Azaz az illeszkedést mutató szövegrész előtt és után nem állhat betű, szám vagy aláhúzásjel. .TP .B \-x Csak teljes sorokkal való illeszkedést vizsgál. .PD .SH SZABÁLYOS KIFEJEZÉSEK (REGULAR EXPRESSIONS) .PP A szabályos kifejezés egy minta, amely a stringeknek egy halmazát írja le. A szabályos kifejezések az aritmetikai kifejezésekhez hasonlóan konstruálhatók, azaz különböző operátorokkal kisebb kifejezésekből építhetők fel. .PP .B Grep kétféle változatát érti a szabályos kifejezések nyelvtanának (syntax): az ``alap'' (basic) és a ``bővített'' (extended) változatot. A .RB "GNU\ " grep -ben nincs különbség a kétféle nyelvtan által elérhető funkciókban. Más megvalósításokban az alap szabályos kifejezések kevésbé hatékonyak. A következő leírás a bővített szabályos kifejezésekre vonatkozik; az alap reguláris kifejezéseknek ettől való különbségeit ezután összegezzük. .PP Az elemi építőkövek olyan szabályos kifejezések, melyek egyetlen karakterhez illeszkednek. A legtöbb karakter (pl. a betűk és a számok) szabályos kifejezések, melyek önmagukhoz illeszkednek. A speciális jelentéssel rendelkező metakarakterek (pl. a ., *, [ karakterek) elé backslash-t kell írni, hogy speciális jelentésük helyett a karakterhez való illeszkedést vizsgálhassuk. (Pl. a mintában levő \\[ fog illeszkedik a szövegbeli nyitó szögletes zárójellel.) .PP A .B [ és .B ] jelek közé írt karakterlista illeszkedik a listában szereplő bármely karakterhez. Amennyiben a lista a .B ^ jellel kezdődik, az illeszkedés a listában .I nem szereplő karakterekkel áll fenn. Például a .B [0123456789] szabályos kifejezés bármely számjegyhez illeszkedik. .P ASCII karakterek tartománya az első és utolsó karakterek megadásával adható meg, ha ezeket `-' jel választja el. (Pl. [a-f] ugyanaz, mint [abcdef].) .P Végül a karakterek néhány speciális osztálya előre definiált névvel rendelkezik. (Ezen nevek jelentése angolul magától értetődő, itt kifejtjük őket.) .PD 0 .TP .BR [:alnum:] betű vagy szám .TP .BR [:alpha:] betű .TP .BR [:cntrl:] vezérlőkarakter .TP .BR [:digit:] számjegy .TP .BR [:graph:] grafikus karakter .TP .BR [:lower:] kisbetű .TP .BR [:print:] nyomtatható karakter .TP .BR [:punct:] elválasztó, központozó jel (.,;?!) .TP .BR [:space:] szóköz .TP .BR [:upper:] nagybetű .TP .BR [:xdigit:] hexadecimális szám .PD .PP Pédául .B [[:alnum:]] jelentése: .BR [0-9A-Za-z] , azzal a kitétellel, hogy az utóbbi forma az ASCII kódolástól függ, míg az előbbi nem, így átvihető. (Megjegyzés: ezen osztálynevekben szereplő zárójelek a szimbolikus nevek részei, és a zárójeles listákat határoló zárójelek mellett ezeket is meg kell adni.) .PP A legtöbb metakarakter elveszti speciális jelentését egy listán belül. Egy .B ] jelet a minta első elemeként szerepeltetve csatolhatunk a listához. Hasonlóan a .B ^ jel az első kivételével bármely helyre kerülve a `^' jelet fogja jelenteni. Végül a `-' jelet a lista utolsó elemeként kell írni, ha nem metakarakterként akarjuk értelmezni. .PP A pont ( .B . ) minden karakterhez illeszkedik. A .B \ew szimbólum az .B [[:alnum:]] szinonímája, míg .B \eW ugyanaz, mint .BR [^[:alnum:]] . .PP A .B ^ és a .B $ jelek metakarakterek, melyek rendre a sorkezdő és -záró üres srtingekhez illeszkednek. Hasonlóan a .B \e< és .B \e> szimbólumok a szavak elejénél illetve végénél található üres stringhez illeszkednek. A .B \eb a szóhatáron levő üres stringhez illeszkedik, míg .B \eB a .I nem szóhatáron levő üres stringhez illeszkedik. .PP Az egy karakterhez illeszkedő szabályos kifejezéseket a következő ismétlési operátorok egyike követheti: .PD 0 .TP .B ? Az előző tag opcionális, és legfeljebb egyszer illeszkedik. .TP .B * Az előző tag nulla vagy több alkalommal illeszkedik. .TP .B + Az előző tag egy vagy több alkalommal illeszkedik. .TP .BI { n } Az előző tag pontosan .I n alkalommal illeszkedik. .TP .BI { n ,} Az előző tag .I n vagy több alkalommal illeszkedik. .TP .BI {, m } Az előző tag legfeljebb .I m alkalommal illeszkedik. .TP .BI { n , m } Az előző tag legalább .I n de legfeljebb .I m alkalommal illeszkedik. .PD .PP Két szabályos kifejezés összefűzhető; a kapott szabályos kifejezés minden olyan stringhez illeszkedik, amely a két szabályos kifejezéshez illeszkedő két részstringből állítható össze a sorrend megtartása mellett. .PP Két szabályos kifejezés összekapcsolható a .BR | infix operátorral; a kapott szabályos kifejezés minden stringhez illeszkedik, amelyikhez valamelyik részkifejezés illeszkedik. .PP Az ismétlés nagyobb precedenciájú, mint az összefűzés, ami viszont a választóoperátornál (azaz |-nál) nagyobb precedenciájú. Egy részkifejezés zárójelbe tehető, hogy felülbíráljuk a precedenciát. .PP A .BI \e n visszahivatkozást (backreference) jelöl, ahol .I n egy számjegy. Ez illeszkedik ahhoz a stringhez, amely a szabályos kifejezés ezt megelőző .IR n -edik zárójeles alkifejezéshez illeszkedett. .PP Az alap szabályos kifejezésekben a .BR ? , .BR + , .BR { , .BR | , .BR ( , és .BR ) metakarakterek elvesztik speciális jelentésüket; helyettük a backslash-es változatukat kell használni: .BR \e? , .BR \e+ , .BR \e{ , .BR \e| , .BR \e( , és .BR \e) . .PP Az .B egrep programban a .B { metakarakter elveszti speciális jelentését, helyette a .BR \e{ használható. .SH DIAGNOSZTIKA .PP Általában a kilépési állapot (exit status) 0, ha volt illeszkedés és 1, ha nem volt egyetlen illeszkedés sem. A .B \-v opció megfordítja ennek értelmét. .PP A 2 kilépési állapot hibát jelez: nyelvtani hiba volt a mintában vagy elérhetetlen a bemeneti fájl, esetleg más rendszerhiba történt. .SH HIBÁK .PP A hibajelentések e-mail-en a .BR bug-gnu-utils@prep.ai.mit.edu . címre küldendők. Győződjön meg róla, hogy a ``grep'' szó szerepel valahol a ``Subject:'' mezőben. .PP Nagy ismétlési számok a .BI { m , n } ismétlési operátorban nagy memóriafelhasználást eredményezhetnek. Továbbá néhány más bonyolult szabályos kifejezés exponenciálisan növő időt és tárhelyet követelhet, és azt eredményezheti, hogy a .B grep kifut a memóriából. .PP A visszahivatkozások nagyon lassúak és exponenciálisan növő futásidőt igényelnek. .SH MAGYAR FORDÍTÁS Horváth András