Provided by:
manpages-hu_20010119-5_all 
NÉV
grep, egrep, fgrep - mintához illeszkedő sorokat nyomtat
ÁTTEKINTÉS
grep [ -[[AB] ]num ] [ -[CEFGVBchilnsvwx] ] [ -e ] minta | -ffile ] [
fjlok... ]
LEÍRÁS
Grep a megnevezett bemeneti fjlok -ban a megadott mint -hoz
illeszkedő sorokat keres. Amennyiben nincs bemenő fájlnév megadva, vagy
az a - jel, a szabványos bemenetet olvassa. Alapértelmezés szerint
grep a mintához illeszkedő sorokat kinyomtatja.
Három fő változata van a grep -nek, melyeket a következő opciókkal
szabályozhatunk:
-G A mint -t alap szabályos kifejezésként (basic regular
expression) kezeli. Részletesebben lásd lentebb. Ez az
alapértelmezett.
-E A mint -t bővített szabályos kifejezésként (extended regular
expression) kezeli. Részletesebben lásd lentebb.
-F A 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.
Létezik továbbá két programváltozat: egrep és fgrep . Egrep hasonló,
de nem azonos grep -E, -vel és kompatíbilis a történelmi Unix egrep
-pel. Fgrep azonos grep -F -fel.
A grep minden változata megérti az alábbi opciókat:
-num Az illeszkedést mutató sorok környezetükkel együtt lesznek
kinyomatatva, azaz ezen sorok előtt és utáni num számú sor is
nyomtatásra kerül. Eközben a grep program sosem fog egy sort
többször kinyomtatni, még akkor sem, ha ezek a környezetek
átfedik egymást.
-A num Az illeszkedést mutató sorok utáni num sor is nyomtatásra kerül.
-B num Az illeszkedést mutató sorok előtti num sor is nyomtatásra
kerül.
-C Azonos -2 -vel.
-V Kinyomtatja a grep verziószámát a szabványos hibakimenetre. Ezt
a verziószámot célszerű csatolni minden hibajelentéshez. (Lásd
lent.)
-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.)
-c Elhagyja a szokásos kimenetet, ehelyett az illeszkedést mutató
sorok számát írja ki minden fájl esetére. A -v opcióval (lásd
lent), a nem illeszkedő sorokat számolja.
-e minta
A mint -t használja mintának. Hasznos, ha a minta - jellel
kezdődik.
-f fjl
A mintát a fjl -ból veszi.
-h Több fájlban való kereséskor elhagyja a kimeneten a fájlnevek
sor eleji kiírását.
-i Nem különbözteti meg a kis- és nagybetűket sem a mint -ban, sem
a bemeneti fájlban.
-L Elhagyja a szokásos kimenetet, és csak azon fájlok neveit adja
meg, amelyekből nem származna kimenet.
-l Elhagyja a szokásos kimenetet, és csak azon fájlok neveit adja
meg, amelyekből származna kimenet.
-n A kimenet sorai elején megadja a sor bemeneti fájlon belüli
számát.
-q Csendes (quiet) üzemmód: elhagyja a normális kimenetet.
(Ilyenkor a grep -nek csak a visszatérési értéke ad
információt.)
-s Elhagyja a nemlétező vagy olvashatatlan fájlokról szóló
hibajelentéseket.
-v Megfordítja az illeszkedés értelmét: a mintához nem illeszkedő
sorokat választja ki.
-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.
-x Csak teljes sorokkal való illeszkedést vizsgál.
SZABÁLYOS KIFEJEZÉSEK (REGULAR EXPRESSIONS)
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.
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 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.
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.)
A [ és ] jelek közé írt karakterlista illeszkedik a listában szereplő
bármely karakterhez. Amennyiben a lista a ^ jellel kezdődik, az
illeszkedés a listában nem szereplő karakterekkel áll fenn. Például a
[0123456789] szabályos kifejezés bármely számjegyhez illeszkedik.
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].)
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.)
[:alnum:]
betű vagy szám
[:alpha:]
betű
[:cntrl:]
vezérlőkarakter
[:digit:]
számjegy
[:graph:]
grafikus karakter
[:lower:]
kisbetű
[:print:]
nyomtatható karakter
[:punct:]
elválasztó, központozó jel (.,;?!)
[:space:]
szóköz
[:upper:]
nagybetű
[:xdigit:]
hexadecimális szám
Pédául [[:alnum:]] jelentése: [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.)
A legtöbb metakarakter elveszti speciális jelentését egy listán belül.
Egy ] jelet a minta első elemeként szerepeltetve csatolhatunk a
listához. Hasonlóan a ^ 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.
A pont ( . ) minden karakterhez illeszkedik. A \w szimbólum az
[[:alnum:]] szinonímája, míg \W ugyanaz, mint [^[:alnum:]].
A ^ és a $ jelek metakarakterek, melyek rendre a sorkezdő és -záró üres
srtingekhez illeszkednek. Hasonlóan a \< és \> szimbólumok a szavak
elejénél illetve végénél található üres stringhez illeszkednek. A \b a
szóhatáron levő üres stringhez illeszkedik, míg \B a nem szóhatáron
levő üres stringhez illeszkedik.
Az egy karakterhez illeszkedő szabályos kifejezéseket a következő
ismétlési operátorok egyike követheti:
? Az előző tag opcionális, és legfeljebb egyszer illeszkedik.
* Az előző tag nulla vagy több alkalommal illeszkedik.
+ Az előző tag egy vagy több alkalommal illeszkedik.
{n} Az előző tag pontosan n alkalommal illeszkedik.
{n,} Az előző tag n vagy több alkalommal illeszkedik.
{,m} Az előző tag legfeljebb m alkalommal illeszkedik.
{n,m} Az előző tag legalább n de legfeljebb m alkalommal illeszkedik.
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.
Két szabályos kifejezés összekapcsolható a | infix operátorral; a
kapott szabályos kifejezés minden stringhez illeszkedik, amelyikhez
valamelyik részkifejezés illeszkedik.
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.
A \n visszahivatkozást (backreference) jelöl, ahol n egy számjegy. Ez
illeszkedik ahhoz a stringhez, amely a szabályos kifejezés ezt megelőző
n -edik zárójeles alkifejezéshez illeszkedett.
Az alap szabályos kifejezésekben a ?, +, {, |, (, és ) metakarakterek
elvesztik speciális jelentésüket; helyettük a backslash-es változatukat
kell használni: \?, \+, \{, \|, \(, és \).
Az egrep programban a { metakarakter elveszti speciális jelentését,
helyette a \{ használható.
DIAGNOSZTIKA
Általában a kilépési állapot (exit status) 0, ha volt illeszkedés és 1,
ha nem volt egyetlen illeszkedés sem. A -v opció megfordítja ennek
értelmét.
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.
HIBÁK
A hibajelentések e-mail-en a 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.
Nagy ismétlési számok a {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 grep kifut a memóriából.
A visszahivatkozások nagyon lassúak és exponenciálisan növő futásidőt
igényelnek.
MAGYAR FORDÍTÁS
Horváth András <horvatha@rs1.szif.hu>