NAAM
grep, egrep, fgrep − druk regels af, die een patroon passen
OVERZICHT
grep
[opties] PATROON [BESTAND...]
grep [opties] [−e PATROON |
−f BESTAND] [BESTAND...]
BESCHRIJVING
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.
OPTIES
−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 vóór 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 vervelend 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 directories 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 uitgebreide reguliere expressie (zie onder).
−e PATROON, −−regexp=PATROON
{−−reguliere−expressie=} Gebruik PATROON als een patroon; bruikbaar 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 reguliere 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 stoppen 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 aanroep. 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 zorgen 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 overeenkomsten 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 bestandnaam, 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.
REGULIERE EXPRESSIES
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 beschrijving 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 reguliere 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:] {alphabetisch}, [: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 afhankelijk 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 symbolische namen, en ook gegeven moeten worden bij de ook al rechte haakjes die de rechte-haakjes-lijst omsluiten.) De meeste metakarakters verliezen 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 respectievelijk 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 voorrang 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 daarvóór gepast door de nde met haakjes omsloten sub-string in de reguliere expressie.
in basis reguliere expressies verliezen de metakarakters ?, +, {, |, (, en ) hun speciale betekenis; in plaats daarvan gebruik de ge-backslashte {\} 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 vermijden.
OMGEVING VARIABELEN
GREP_OPTIONS
Deze variabele bepaalt standaard opties, die vóór 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=without-match en −−directories=skip had gekregen vóór 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 omgevingsvariabelen zijn gezet, of als de berichten verzameling niet is geïnstalleerd, 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 geïnstalleerd, 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 worden als bestandsnamen; standaard worden dergelijke opties verplaatst naar het begin van de operanden lijst en worden behandeld 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 omgevingsvariabele’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 beschikbaar met de GNU C bibliotheek, en alleen wanneer POSIXLY_CORRECT ongezet is.
DIAGNOSE
Normaal is de eindwaarde 0 als er overeenkomsten werden gevonden, en 1 als geen overeenkomsten werden gevonden. (De −v optie keert de betekenis van de eindstaat om.) Eindwaarde is 2 als er spellings fouten waren in het patroon, niet toegankelijke invoer bestanden, of andere systeem fouten.
BUGS
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 reguliere 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.
VERTALING
Dit is de handleiding van grep 2.4.2. Bijna alles wat tussen ’{’..’}’ staat is aanvullende vertaling, behalve de tekst over een bepaalt aantal keren herhalen in reguliere expressies, en hoort niet bij de originele handleiding. Email naar <manpages-nl [AT] nl.org>.