GREP(1) GREP(1)
grep, egrep, fgrep - druk regels af, die een patroon passen
grep [opties] PATROON [BESTAND...]
grep [opties] [-e PATROON | -f BESTAND] [BESTAND...]
Grep zoekt de genoemde invoer BESTANDen (of `standaardinvoer' als geen
bestanden genoemd zijn, of als de bestandnaam - werd gegeven) op regels
die overeenkomen met het gegeven PATROON. Normaal drukt grep de
passende regels af.
In aanvulling hierop zijn de twee andere programma's egrep en fgrep
beschikbaar. Egrep is gelijk aan grep -E. Fgrep is gelijk aan
grep -F.
-A NUM, --after-context=NUM
{--nakomende-omgeving} Druk NUM regels nakomende omgeving af
achter de passende regels.
-a, --text
{--text} Verwerk een binair bestand alsof het tekst was; dit is
hetzelfde als de --binary-files=text optie.
-B NUM, --before-context=NUM
{--voorgaande-omgeving} Druk NUM regels voorgaande omgeving vr
de passende regels.
-C [NUM], -NUM, --context[=NUM]
{--omgeving[=]} Druk NUM regels (standaard 2) af van de uitvoer
omgeving.
-b, --byte-offset
{--byte-positie} Druk de byte positie binnen het invoerbestand,
voorafgaand aan elke regel uitvoer.
--binary-files=SOORT
{--binaire-bestanden=} Als de eerste paar bytes van een bestand
aangeven dat een bestand binaire gegevens bevat, neem dan aan
dat het bestand van de soort SOORT is. Normaal is SOORT binair,
en grep geeft gewoonlijk of een n-regelig bericht dat een binair
bestand past, of geen bericht als er geen overeenkomst is. Als
SOORT without-match {zonder-overeenkomst} is, dan neemt grep aan
dat een binair bestand niet past; dit is gelijk aan de -I optie.
Als SOORT text is, dan verwerkt grep een binaire bestand alsof
het tekst was; dit is gelijk aan de -a optie. Waarschuwing:
grep --binary-files=text kan rotzooi uitvoeren, wat een verve-
lend gevolg kan hebben als de uitvoer naar een terminal gaat en
als de terminal driver er iets van uitlegt als een opdracht.
-c, --count
{--tel} Onderdruk normale uitvoer; druk in plaats daarvan een
optelling van de passende regels af voor elk invoer bestand.
Met de -v, --invert-match {--omkeren-overeenkomst} optie (zie
onder), tel niet-overeenkomende regels.
-d ACTIE, --directories=ACTIE
{--directories=} Als een invoer bestand een directorie is,
gebruik ACTIE om het te verwerken. Normaal is ACTIE read {lees},
wat betekend dat directories gelezen worden alsof het gewonde
bestanden waren. Als ACTIE skip {overslaan} is, worden directo-
ries in stilte overgeslagen. Als ACTIE recurse {herhaal} is,
leest grep alle bestanden onder elke directorie, steeds dieper
in de directorie boom; dit is gelijk aan de -r optie.
-E, --extended-regexp
{--uitgebreide-reguliere-expressie} Leg PATROON uit als een uit-
gebreide reguliere expressie (zie onder).
-e PATROON, --regexp=PATROON
{--reguliere-expressie=} Gebruik PATROON als een patroon; bruik-
baar voor patronen beginnend met -.
-F, --fixed-strings
{--vaste-string} Leg PATROON uit als een lijst vaste strings,
verdeeld door nieuweregels, waarvan er maar n hoeft te passen
voor een overeenkomst.
-f BESTAND, --file=BESTAND
{--bestand=} Verkrijg patronen van BESTAND, n per regel. Het
lege bestand bevat nul patronen, en past daarom niets.
-G, --basic-regexp
{--basis-reguliere-expressie} Leg PATROON uit als een basis reg-
uliere expressie (zie onder). Dit is de gewone gang van zaken.
-H, --with-filename
{--met-bestandnaam} Druk de bestandnaam af voor elke passende
regel.
-h, --no-filename
{--geen-bestandnaam} Onderdruk het voorvoegen van bestandsnamen
in de uitvoer wanneer meerdere bestanden worden doorzocht.
--help {--hulp} Geef een kort hulp bericht.
-I Verwerk een binair bestand als of het geen passende gegevens
bevatte; dit is gelijk aan de --binary-files=without-match
optie.
-i, --ignore-case
{--negeer-hoofd/kleine-letters} Negeer het verschil tussen
hoofd- en kleine letters in het PATROON en in de invoer
bestanden.
-L, --files-without-match
{--bestanden-zonder-overeenkomst} Onderdruk gewone uitvoer; druk
in plaats daarvan de naam van elk invoer bestand af waar normaal
geen uitvoer van zou zijn worden afgedrukt. Het zoeken zal stop-
pen bij de eerste overeenkomst.
-l, --files-with-matches
{--bestanden-met-overeenkomst} Onderdruk gewone uitvoer; druk in
plaats daarvan de naam van elk invoer bestand af waar normaal
uitvoer van zou zijn worden afgedrukt. Het zoeken zal stoppen
bij de eerste overeenkomst.
--mmap {--mmap} Als mogelijk, gebruik de mmap(2) systeem aanroep om
invoer te lezen, in plaats van de standaard read(2) systeem aan-
roep. In sommige gevallen geeft --mmap betere resultaten.
Echter, --mmap kan onbepaald gedrag veroorzaken (ook coredumpen)
als het invoerbestand krimpt tijdens het lopen van grep, of als
een In/Uit fout optreedt.
-n, --line-number
{--regel-nummer} Voeg voor elke regel uitvoer het regelnummer
binnen zijn invoer bestand.
-q, --quiet, --silent
{--stil},{--zachtjes} Stil; onderdruk normale uitvoer. Het
zoeken zal stoppen bij de eerste overeenkomst. Zie ook de -s of
--no-messages {--geen-berichten} optie onder.
-r, --recursive
{--herhaaldelijk} Lees alle bestanden onder elke directorie,
steeds dieper in de directorie boom; dit is gelijk aan de -d
recurse {herhaaldelijk} optie.
-s, --no-messages
{--geen-berichten} Onderdruk fout berichten over niet-bestaande
of onleesbare bestanden. Overdraagbaarheids opmerking: in
tegenstelling tot GNU grep, voldeed traditionele grep niet aan
POSIX.2, omdat de traditionele grep een -q ontbeerde en zijn -s
optie zich gedroeg zoals GNU grep's -q optie. Shell scripts die
overdraagbaar bedoeld zijn naar traditionele grep zouden beide
-q en -s moeten vermijden en in plaats daarvan uitvoer naar
/dev/null omleiden.
-U, --binary
{--binair} Behandel de bestand(en) als binair. Standaard, onder
MS-DOS en MS-win, gokt grep de bestand soort door te kijken naar
de inhoudt van de eerst gelezen 32KB van het bestand. Als grep
besluit dat het bestand een tekst bestand is haalt het de CR
{regel-overhaal} karakters uit de originele bestand inhoudt (om
reguliere expressies met ^ en $ goed te laten werken). Het
opgeven van -U zet dit gokken opzij, en veroorzaakt dat alle
bestanden gelezen worden en doorgegeven worden aan het passen-
mechanisme. Hoe dan ook, als een bestand een tekst bestand met
CR/LF paren aan het einde van elke regel is, zal dat ervoor zor-
gen dat sommige reguliere expressies zullen falen. Deze optie
heeft geen zin op andere platformen anders dan MS-DOS en MS-win.
-u, --unix-byte-offsets
{--unix-byte-positie} Rapporteer Unix-stijl byte posities. Deze
optie veroorzaakt dat grep byte posities rapporteert alsof het
bestand een Unix-stijl tekst bestand was, o.a. met CR karakters
eruit gehaald. Dit zal dezelfde uitkomsten opleveren als het
laten lopen van grep op een Unix machine. Deze optie heeft geen
gevolg tenzij de -b optie ook wordt gebruikt; het heeft geen
gevolg op andere platformen dan MS-DOS en MS-win.
-V, --version
{--versie} Druk het versie nummer van grep af op de standaard
uitvoer. Dit versie nummer zou bij alle bugrapporten gevoegd
moeten worden (zie onder).
-v, --invert-match
{--omkeren-overeenkomst} Keer de manier van passen om, door
niet-passende regels te kiezen.
-w, --word-regexp
{--woord-reguliere-expressie} Kies alleen regels met overeenkom-
sten die hele woorden vormen. Er wordt getest zodat de passende
sub-string aan het begin van de regel zit, of voorafgegaan wordt
door een niet-woord karakter. Ook moet het aan het einde van de
regel zitten, of gevolgd worden door een niet-woord karakter.
Bij woorden behorende karakters zijn letters, cijfers en de
onderstreep {_}.
-x, --line-regexp
{--regel-reguliere-expressie} Kies alleen die overeenkomsten die
precies met een hele regel overeenkomen.
-y Verouderd synoniem voor -i.
-Z, --null
{--nul} Voer een nul byte (het ASCII NULL karakter) uit, in
plaats van het karakter dat gewoonlijk volgt op een bestandnaam.
Bijvoorbeeld, grep -lZ voert een nul byte uit na elke bestand-
naam, in plaats van de gewone nieuweregel. Deze optie maakt de
uitvoer eenduidig, zelfs bij het voorkomen van bestandsnamen die
ongewone karakters zoals nieuweregels bevatten. Deze optie kan
worden gebruikt met opdrachten zoals find -print0, perl -0, sort
-z, en xargs -0 om willekeurige bestandsnamen te verwerken,
zelfs als die nieuweregel-karakters bevatten.
Een reguliere expressie is een patroon dat een set strings beschrijft.
Reguliere expressies worden op dezelfde manier gebouwd als rekenkundige
expressies: door met gebruik van verschillende operatoren kleinere
delen samen te binden.
Grep begrijpt twee verschillende versies van reguliere-expressies
spelling: "basis" and "uitgebreid." In GNU grep, is er geen verschil
in bruikbaarheid tussen beide spellingen. In andere implementaties
zijn basis reguliere expressies minder krachtig. De volgende beschrijv-
ing gaat op voor uitgebreide reguliere expressies; verschillen met de
basis reguliere expressies worden naderhand samengevat.
De fundamentele bouwstenen zijn de reguliere expressies, die passen op
een enkel karakter. De meeste karakters, ook alle letters en cijfers,
zijn reguliere expressies die op zichzelf passen. Elk metakarakter met
speciale betekenis kan geciteerd worden door het vooraf te laten gaan
door een backslash '\'.
Een lijst van karakters omsloten door [ en ] past elk enkel karakter in
die lijst; als het eerste karakter van de lijst het dakje ^ is, dan
past het elk enkel karakter niet in die lijst. Bijvoorbeeld, de reg-
uliere expressie [0123456789] past elk enkel cijfer. Een interval van
karakters mag opgegeven worden door het geven van het eerste en laatste
karakter, met een streepje ertussen. Tenslotte, bepaalde benoemde
classes van karakters zijn voorgedefinieerd. Hun namen spreken voor
zichzelf, en het zijn [:alnum:] {alpha numeriek}, [:alpha:] {alpha-
betisch}, [:cntrl:] {controle tekens}, [:digit:] {cijfers}, [:graph:]
{grafische tekens}, [:lower:] {kleine letters}, [:print:] {afdrukbare
tekens}, [:punct:] {interpunctie}, [:space:] {witruimte}, [:upper:]
{hoofd letters}, en [:xdigit:] {hexadecimale cijfers}. Bijvoorbeeld
[[:alnum:]] betekend [0-9A-Za-z], behalve dat de laatste vorm afhanke-
lijk is van de POSIX localiteit en de ASCII karakter codering, terwijl
de eerste onafhankelijk is van localiteit en karakterset. (Merk op dat
de rechte haakjes in deze klasse namen onderdeel zijn van de symbolis-
che namen, en ook gegeven moeten worden bij de ook al rechte haakjes
die de rechte-haakjes-lijst omsluiten.) De meeste metakarakters ver-
liezen hun speciale betekenis binnen een lijst. Om een letterlijke ] op
te geven, plaats het als eerste in de lijst. Hetzelfde idee voor een
letterlijke ^, plaats het overal behalve als eerste. Tenslotte, om een
letterlijke - bij te voegen, plaats het als laatste.
De punt . past elk enkel karakter. Het symbool \w is een synoniem
voor [[:alnum:]] en \W is een synoniem voor [^[:alnum]].
Het dakje ^ en het dollar teken $, zijn metakarakters die respec-
tievelijk de lege string aan het begin, en aan het einde van een regel
passen. De symbolen \< en \>, passen respectievelijk de lege string
aan het begin, en aan het einde van een woord. Het symbool \b past de
lege string aan de rand van een woord, en \B past de lege string als
het niet de rand van een woord is.
Een reguliere expressie mag gevolgd worden door een of meerdere herhaal
operatoren:
? Het voorgaande item is niet vereist en past ten hoogste n maal.
* Het voorgaande item zal nul of meer keer gepast worden.
+ Het voorgaande item zal n of meer keer gepast worden.
{n} Het voorgaande item zal precies n keer gepast worden.
{n,} Het voorgaande item zal n of meer keer gepast worden.
{n,m} Het voorgaande item zal minstens n keer, maar niet meer dan m
keer gepast worden.
Twee reguliere expressies kunnen achter elkaar aan worden gezet; de
reguliere expressie die dat oplevert past elk string die bestaat uit
het achter elkaar aan zetten van twee sub-strings die de twee sub-
expressies, respectievelijk, passen.
Twee reguliere expressies kunnen samengevoegd worden door de invoeg
operator |; de reguliere expressie die dat oplevert past elke string
die of de ene, of de andere sub-expressie past.
Herhaling heeft voorrang boven achter elkaar aanzetten, wat weer voor-
rang heeft boven wisselen. Een hele sub-expressie kan omgeven worden
door haakjes om deze voorrangsregels te omzeilen.
De terugverwijzing \n, waar n een enkel cijfer is, past de sub-string
daarvr gepast door de nde met haakjes omsloten sub-string in de reg-
uliere expressie.
in basis reguliere expressies verliezen de metakarakters ?, +, {, |, (,
en ) hun speciale betekenis; in plaats daarvan gebruik de ge-back-
slashte {\} versies \?, \+, \{, \|, \(, en \).
De traditionele egrep had geen ondersteuning voor het { metakarakter,
en sommige egrep implementaties ondersteunen in plaats daarvan \{,
overdraagbare scripts zouden { in egrep patronen moeten ontwijken, en
zullen [{] moeten nemen om een letterlijke { te passen.
GNU egrep probeert het traditionele gebruik te ondersteunen, door aan
te nemen dat { niet speciaal is als het het begin zou zijn van een
ongeldige interval opgave. Bijvoorbeeld, de shell opdracht egrep '{1'
zoekt voor de twee-karakter string {1 in plaats van het melden van een
spellings fout in de reguliere expressie. POSIX.2 laat dit gedrag toe
als een uitbreiding, maar overdraagbare scripts zouden het moeten ver-
mijden.
GREP_OPTIONS
Deze variabele bepaalt standaard opties, die vr alle expliciete
opties geplaatst zullen worden. Bijvoorbeeld, als GREP_OPTIONS
'--binary-files=without-match --directories=skip' is, dan
gedraagt grep zich alsof het de twee opties --binary-files=with-
out-match en --directories=skip had gekregen vr alle expliciete
opties. Optie opgaves worden gescheiden door witruimte. Een
backslash {\} escape't {bevrijdt} het volgende karakter, zodat
het gebruikt kan worden om een optie te geven die witruimte, of
een backslash {\} bevat.
LC_ALL {lc alles}, LC_MESSAGES {lc bericht}, LANG {taal}
Deze variabelen geven de LC_MESSAGES localiteit op, die de taal
bepaalt die grep gebruikt voor berichten. De localiteit wordt
bepaald door de eerste van deze variabelen die gezet is.
Amerikaans Engels wordt gebruikt als geen van deze omgev-
ingsvariabelen zijn gezet, of als de berichten verzameling niet
is genstalleerd, of als grep niet was gecompileerd met talen
ondersteuning (NLS).
LC_ALL {lc alles}, LC_CTYPE {c_c soort}, LANG {taal}
Deze variabelen geven de LC_CTYPE localiteit op, die het soort
karakters bepaalt, o.a. welke karakters witruimte zijn. De
localiteit wordt bepaald door de eerste van deze variabelen die
is gezet. De POSIX localiteit wordt gebruikt als geen van deze
omgevingsvariabelen zijn gezet, of als de localiteit verzameling
niet is genstalleerd, of als grep niet was gecompileerd met
talen ondersteuning (NLS)
POSIXLY_CORRECT
Als gezet gedraagt grep zich zoals POSIX.2 eist; anders gedraagt
grep zich meer zoals andere GNU programma's. POSIX.2 vereist
dat de opties die volgen op bestandsnamen, behandeld moeten wor-
den als bestandsnamen; standaard worden dergelijke opties ver-
plaatst naar het begin van de operanden lijst en worden behan-
deld als opties. Ook eist POSIX.2 dat de niet herkende opties
als "onwettig" worden aangemerkt, maar omdat ze niet echt tegen
de wet zijn worden ze normaal aangemerkt als "ongeldig".
POSIXLY_CORRECT zet ook _N_GNU_nonoption_argv_flags_ uit,
hieronder beschreven.
_N_GNU_nonoption_argv_flags_
{_n_gnu niet-optie argument-wijzer vlaggen_} (Hier is N grep's
numerieke proces ID.) Als het ide karakter van deze omgev-
ingsvariabele's waarde, 1 is, beschouw het ide operand voor grep
niet als een optie, zelfs als het er een lijkt te zijn. de
shell kan deze variabele in de omgeving plaatsen voor elke
opdracht die het start, daarmee opgevend welke operanden het
resultaat zijn van wildcard expandering en daarom niet behandeld
zou moeten worden als een optie. Dit gedrag is alleen beschik-
baar met de GNU C bibliotheek, en alleen wanneer POSIXLY_CORRECT
ongezet is.
Normaal is de eindwaarde 0 als er overeenkomsten werden gevonden, en 1
als geen overeenkomsten werden gevonden. (De -v optie keert de beteke-
nis van de eindstaat om.) Eindwaarde is 2 als er spellings fouten
waren in het patroon, niet toegankelijke invoer bestanden, of andere
systeem fouten.
Email bugrapporten naar bug-gnu-utils [AT] gnu.org. Wees er zeker van dat
het woord "grep" ergens in het "Subject:" veld staat.
Grote herhalingsaantallen voor de {m,n} bouwsteen kunnen zorgen dat
grep veel geheugen gebruikt. Daar bovenop kunnen sommige obscure reg-
uliere expressies exponentieel meer tijd en ruimte vragen, en kunnen
zorgen dat het geheugen voor grep opraakt.
Terugverwijzingen zijn heel langzaam, en kunnen exponentieel meer tijd
vragen.
Dit is de handleiding van grep 2.4.2. Bijna alles wat tussen `{'..`}'
staat is aanvullende vertaling, behalve de tekst over een bepaalt aan-
tal keren herhalen in reguliere expressies, en hoort niet bij de orig-
inele handleiding. Email naar <manpages-nl [AT] nl.org>.
GNU Project 2004/03/21 GREP(1)