File: grep.1

package info (click to toggle)
manpages-de 0.7-1
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 3,188 kB
  • ctags: 9
  • sloc: makefile: 83; perl: 61
file content (680 lines) | stat: -rw-r--r-- 20,403 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
.\" grep man page
.\" Translated into German by Daniel Kobras <kobras@linux.de>
.\"
.if !\n(.g \{\
.	if !\w|\*(lq| \{\
.		ds lq ``
.		if \w'\(lq' .ds lq "\(lq
.	\}
.	if !\w|\*(rq| \{\
.		ds rq ''
.		if \w'\(rq' .ds rq "\(rq
.	\}
.\}
.de Id
.ds Dt \\$4
..
.TH GREP 1 "26. Oktober 2002" "" "Dienstprogramme für Benutzer"
.SH BEZEICHNUNG
grep, egrep, fgrep \- finde Suchmuster in Dateien
.SH "ÜBERSICHT"
.B grep
.RI [ Optionen ]
.I MUSTER
.RI [ DATEI .\|.\|.]
.br
.B grep
.RI [ Optionen ]
.RB [ \-e
.I MUSTER
|
.B \-f
.IR DATEI ]
.RI [ DATEI .\|.\|.]
.SH BESCHREIBUNG
.PP
.B Grep
sucht in den angegebenen
.IR DATEI en
nach Zeilen, die auf das
.I MUSTER
passen.  Sind keine Dateien oder der spezielle Dateiname 
.B \-
angegeben, so liest
.B grep
statt dessen von der Standardeingabe.  Sofern nicht anders spezifiziert,
gibt es genau die Zeilen aus, die auf
.I MUSTER
passen.
.PP
Es existieren noch die beiden Programmvarianten
.B egrep
und
.BR fgrep .
Sie verhalten sich identisch zum normalen
.BR grep ,
das mit der Option
.B \-E
beziehungsweise
.B \-F
aufgerufen wurde.
.SH OPTIONEN
.TP
.BI \-A " NUM" "\fR,\fP \-\^\-after-context=" NUM
Zeige
.I NUM
Zeilen Kontext im Anschluss an eine auf das Muster passende Zeile an.
.TP
.BR \-a ", " \-\^\-text
Verarbeite eine Binärdatei als wäre sie gewöhnlicher Text; dieser
Schalter bedeutet dasselbe wie die Option
.BR \-\^\-binary-files=text .
.TP
.BI \-B " NUM" "\fR,\fP \-\^\-before-context=" NUM
Zeige
.I NUM
Zeilen Kontext vor einer auf das Muster passenden Zeile an.
.TP
\fB\-C\fP [\fINUM\fP], \fB\-\fP\fINUM\fP, \fB\-\^\-context\fP[\fB=\fP\fINUM\fP]
Zeige je
.I NUM
Zeilen Kontext vor und nach einer auf das Muster passenden Zeile an.
Zwei Zeilen Kontext sind voreingestellt.
.TP
.BR \-b ", " \-\^\-byte-offset
Zeige vor jeder Ausgabezeile den Abstand in Bytes innerhalb der
Eingabedatei an.
.TP
.BI \-\^\-binary-files= TYP
Falls die ersten Bytes einer Datei anzeigen, dass sie Binärdaten
enthält, soll angenommen werden, dass es sich um eine Datei vom Typ
.I TYP
handelt.  Mögliche Typen sind
.BR binary ,
.B text
und
.BR without-match .
In der Einstellung
.B binary
zeigt
.B grep
auf das Muster passende Zeilen nicht direkt an, sondern gibt lediglich
eine Meldung aus, dass in der Datei Treffer gefunden wurden.  Dieses
Verhalten ist voreingestellt.  In der Einstellung
.B without-match
überspringt
.B grep
Binärdateien, ohne dort nach Treffern zu suchen.  Der Schalter
.B \-I
bewirkt dasselbe.  Vorsicht ist mit der Einstellung
.B text
geboten, da
.B grep
hier die passenden Zeilen direkt anzeigt.  Das kann Probleme bereiten,
wenn die Ausgabe auf eine Konsole geleitet wird und deren Treiber manche
der Binärdaten als Steuerzeichen interpretiert.  Dieser Modus kann auch
über den Schalter
.B \-a
eingestellt werden.
.TP
.BR \-c ", " \-\^\-count
Statt die passenden Zeilen direkt anzuzeigen, wird lediglich ihre Anzahl
pro Eingabedatei ausgegeben.  Ist zusätzlich die Option
.BR \-v ", " \-\^\-invert-match
(siehe unten) angegeben, zählt
.B grep
die Zeilen ohne Treffer zusammen.
.TP
.BI \-d " AKTION" "\fR,\fP \-\^\-directories=" AKTION
Handelt es sich bei einer der Eingabedateien um ein Verzeichnis, so soll
die Aktion
.I AKTION
ausgeführt werden, um es zu verarbeiten.  In der Standardeinstellung
.B read
liest
.B grep
das Verzeichnis ein, als wäre es eine gewöhnliche Datei.
Ist
.I AKTION
auf
.B skip
gesetzt, so werden Verzeichnis stillschweigend übersprungen.
Steht
.I AKTION
auf
.B recurse
oder wurde der Schalter
.B \-r
benutzt, so sucht
.B grep
rekursiv durch sämtliche Dateien unterhalb jedes Verzeichnisses.
.TP
.BR \-E ", " \-\^\-extended-regexp
.I MUSTER
soll als erweiterter regulärer Ausdruck (siehe unten) interpretiert werden.
.TP
.BI \-e " MUSTER" "\fR,\fP \-\^\-regexp=" MUSTER
Verwende
.I MUSTER
als das Suchmuster.  Dadurch lässt sich verhindern, dass
.B grep
Suchmuster, die mit
.B \-
beginnen, als Optionen interpretiert.
.TP
.BR \-F ", " \-\^\-fixed-strings
Interpretiere
.I MUSTER
als Liste feststehender Zeichenketten, die durch Zeilenumbruch getrennt
sind.  Für einen Treffer muss mindestens eine der Zeichenketten passen. 
.TP
.BI \-f " DATEI" "\fR,\fP \-\^\-file=" DATEI
Lies die Suchmuster Zeile für Zeile aus
.I DATEI
ein.  Eine leere Datei enthält keinerlei Suchmuster und erzielt deshalb
auch keine Treffer.
.TP
.BR \-G ", " \-\^\-basic-regexp
Interpretiere
.I MUSTER
als gewöhnlichen regulären Ausdruck (siehe unten).  Dies entspricht der
Voreinstellung.
.TP
.BR \-H ", " \-\^\-with-filename
Gibt vor jedem Treffer den zugehörigen Dateinamen aus.
.TP
.BR \-h ", " \-\^\-no-filename
Der Dateiname wird auch dann nicht vor einem Treffer ausgegeben, wenn
mehrere Dateien durchsucht werden.
.TP
.B \-\^\-help
Zeigt eine kurze Hilfe zum Programm an.
.TP
.BR \-I
Behandelt Binärdateien so, als würde ihr Inhalt nie auf das Suchmuster
passen.  Dies ist gleichbedeutend mit der Option
.BR \-\^\-binary-files=without-match .
.TP
.BR \-i ", " \-\^\-ignore-case
Unterscheidet auf der Suche nach Treffern nicht zwischen Groß- und
Kleinschreibung.
.TP
.BR \-L ", " \-\^\-files-without-match
Statt der normalen Ausgabe wird der Name jeder Datei ohne Treffer
angezeigt.  Die Suche endet in jeder Datei beim ersten Treffer.
.TP
.BR \-l ", " \-\^\-files-with-matches
Statt der normalen Ausgabe wird der Name jeder Datei mit mindestens
einem Treffer angezeigt.  Die Suche endet in jeder Datei beim ersten
Treffer.
.TP
.B \-\^\-mmap
Verwendet falls möglich den Systemaufruf
.BR mmap (2)
statt des üblichen
.BR read (2),
um die Eingabedaten einzulesen.  Unter gewissen Umständen erzielt
.B \-\^\-mmap
bessere Leistungswerte, ist jedoch unzuverlässiger und kann sogar zu
Programmabstürzen führen, wenn beispielsweise eine Eingabedatei
während der Suche verkleinert wird oder ein Ein\-/Ausgabefehler auftritt.
.TP
.BR \-n ", " \-\^\-line-number
Gibt vor jeder Zeile die Zeilennummer innerhalb der aktuellen
Eingabedatei aus.
.TP
.BR \-o ", " \-\^\-only-matching
Anstatt der gesamten Zeile wird nur der (nicht-leere) Teil ausgegeben, der einen
Treffer hat. Jeder dieser Teile wird auf einer eigenen Zeile ausgegeben.
.TP
.BR \-q ", " \-\^\-quiet ", " \-\^\-silent
Unterdrückt die normalen Ausgaben.  Die Suche endet nach dem ersten
Treffer.  Diese Option ist sinnvoll, wenn lediglich der Rückgabewert von
.B grep
weiter verwendet wird.  Siehe auch die Optionen
.B \-s
und
.B \-\^\-no-messages
weiter unten.
.TP
.BR \-r ", " \-\^\-recursive
Durchsuche rekursiv sämtliche Dateien unterhalb eines Verzeichnisses.
Die Option
.B "\-d recurse"
hat dieselbe Bedeutung.
.TP
.BR \-s ", " \-\^\-no-messages
Unterdrücke Fehlermeldungen über nicht vorhandene oder unlesbare
Dateien.  Anmerkung zur Portierbarkeit:  Im Gegensatz zu \s-1GNU\s0
.B grep
verhielt sich das ursprüngliche
.B grep
nicht konform zum \s-1POSIX.2\s0-Standard, da es keine Option
.B \-q
kannte und die Option
.B \-s
sich so verhielt wie
.B \-q
im heutigen \s-1GNU\s0
.BR grep .
Portable Shell-Skripte, die auch mit dem ursprünglichen
.B grep
funktionieren müssen, sollten deshalb weder
.B \-q
noch
.B \-s
verwenden und statt dessen die Ausgabe nach 
.I /dev/null
umleiten.
.TP
.BR \-U ", " \-\^\-binary
Verarbeite die Eingaben als Binärdateien.  Unter MS-DOS und MS-Windows
versucht
.BR grep ,
den Dateityp zu bestimmen, indem es die ersten 32kByte der Datei
untersucht.  In einer Textdatei entfernt es daraufhin intern alle
CR-Wagenrücklaufzeichen, damit
.B ^
und
.B $
in regulären Ausdrücken korrekt funktionieren.  Die Angabe von
.B \-U
umgeht die ganze Raterei und weist
.B grep
an, jede Datei exakt so zu verarbeiten, wie sie eingelesen worden ist.
Falls es sich um eine Textdatei handelt, deren Zeilen mit einem
kombinierten Wagenrücklauf und Zeilenumbruch (CR/LF) enden, arbeiten
manche reguläre Ausdrücken fehlerhaft.  Diese Option hat keine
Auswirkungen auf anderen Plattformen als MS-DOS und MS-Windows.
.TP
.BR \-u ", " \-\^\-unix-byte-offsets
Zeigt Byte-Abstände im Unix-Stil an.  Mit Hilfe dieses Schalters gibt
.B grep
Byte-Abstände in Textdateien stets so aus, als würden sie nur ein
einzelnes Zeilenumbruchsymbol am Zeilenende enthalten.  Mit anderen
Worten:  Ein eventuelles Wagenrücklaufsymbol am Zeilenende wird nicht
berücksichtigt.  So erzeugt
.BR grep ,
angewandt auf eine Textdatei im DOS-Format identische Resultate wie für
die gleiche Textdatei im Unix-Format.  Diese Option ist nur in
Verbindung mit dem Schalter
.B \-b
wirksam.  Sie hat keine Auswirkungen auf anderen Plattformen als MS-DOS
und MS-Windows.
.TP
.BR \-V ", " \-\^\-version
Zeigt die Versionsnummer von
.B grep
auf dem Standard-Fehlerausgabekanal an.  Die Versionsnummer sollte in
allen Fehlerberichten (siehe unten) mit angegeben werden.
.TP
.BR \-v ", " \-\^\-invert-match
Invertiert das Suchmuster, so dass alle Zeilen ausgewählt werden, die
nicht auf
.I MUSTER
passen.
.TP
.BR \-w ", " \-\^\-word-regexp
Wählt nur solche Zeilen aus, deren Treffer aus kompletten Wörtern
bestehen.  Im einzelnen verläuft der Test so, dass eine passende
Zeichenkette entweder am Zeilenanfang beginnen muss oder auf ein Zeichen
folgt, das nicht zu den Wortaufbau-Zeichen gehört.  Ebenso muss das Ende
der Zeichenkette entweder mit dem Zeilenende zusammenfallen, oder es
wird nicht gefolgt von einem der Wortaufbau-Zeichen.  Wortaufbau-Zeichen
sind alle Buchstaben, Ziffern sowie der Unterstrich.
.TP
.BR \-x ", " \-\^\-line-regexp
Wählt nur solche Zeilen aus, deren Treffer die komplette Zeile umfasst.
.TP
.B \-y
Ein veraltetes Synonym für
.BR \-i .
.TP
.BR \-Z ", " \-\^\-null
Gibt statt des üblichen Trennzeichens nach jedem Dateinamen ein
Nullbyte (das \s-1ASCII\s0-Zeichen 
.BR NUL )
aus.  So stellt beispielsweise
.B "grep \-lZ"
nach jedem Dateinamen statt des Zeilenumbruchs ein Nullbyte dar.  Diese
Option sorgt dafür, dass die Ausgabe selbst in Gegenwart ungewöhnlicher
Dateinamen eindeutig bleibt, die zum Beispiel einen Zeilenumbruch
enthalten.  Sie kann zusammen mit Kommandos wie
.BR "find \-print0" ,
.BR "perl \-0" ,
.BR "sort \-z"
und
.B "xargs \-0"
dazu verwendet werden, beliebige Dateinamen zu verarbeiten.
.SH "REGULÄRE AUSDRÜCKE"
.PP
Unter einem regulären Ausdruck versteht man ein Muster, das
eine bestimmte Menge von Zeichenketten beschreibt.  Reguläre Ausdrücke
werden ganz ähnlich aufgebaut wie arithmetische Ausdrücke, indem man
sie mit Hilfe verschiedener Operatoren aus kleineren Ausdrücken
zusammensetzt.
.PP
.B Grep
versteht zwei verschiedene Klassen regulärer Ausdrücke: 
\*(lqgewöhnliche\*(rq und \*(lqerweiterte\*(rq.  Eine Unterscheidung,
die für
.RB "\s-1GNU\s0\ " grep
keine Rolle spielt, da beide Varianten gleich mächtig sind.  In anderen
.BR grep -Implementierungen
steht mit gewöhnlichen regulären Ausdrücken jedoch nur ein
eingeschränkter Funktionsumfang zur Verfügung.  Die folgende
Beschreibung bezieht sich auf erweiterte reguläre Ausdrücke; die
Unterschiede zu gewöhnlichen regulären Ausdrücken sind im Anschluss
daran zusammengefasst.
.PP
Grundlegendster Baustein sind die regulären Ausdrücke, die auf ein
einzelnes Zeichen passen.  Die meisten Zeichen, speziell alle Buchstaben
und Ziffern, sind zugleich reguläre Ausdrücke, die auf sich selbst
passen.  Alle Metazeichen, die eine besondere Bedeutung besitzen, können
durch einen vorausgehenden Rückstrich geschützt werden.
.PP
Eine Liste von Zeichen, die durch
.B [
und
.B ]
eingeschlossen ist, passt auf ein beliebiges Zeichen daraus.  Beginnt
die Liste mit dem Symbol
.BR ^ ,
so kehrt sich die Bedeutung um; sie passt auf alle Zeichen, die
.I nicht
in der Liste enthalten sind.  Beispielsweise passt der reguläre Ausdruck
.B [0123456789]
auf eine beliebige einzelne Ziffer.  Ein ganzer Bereich von Zeichen kann
angegeben werden durch das erste und letzte Zeichen daraus, verbunden
durch einen Bindestrich.  Schließlich gibt es noch eine Reihe
vordefinierter Klassen von Zeichen, im einzelnen:
.B [:alnum:]
(Buchstaben und Ziffern),
.B [:alpha:]
(Buchstaben),
.B [:cntrl:]
(Steuerzeichen),
.B [:digit:]
(Ziffern),
.B [:graph:]
(graphische Zeichen, das heißt [:alnum:] und [:punct:]),
.B [:lower:]
(Kleinbuchstaben),
.B [:print:]
(druckbare Zeichen),
.B [:punct:]
(Satzzeichen),
.B [:space:]
(Leerraum),
.B [:upper:]
(Großbuchstaben) und
.B [:xdigit:]
(Ziffern des Hexadezimalsystems).  So bedeutet beispielsweise
.B [[:alnum:]]
für gewöhnlich dasselbe wie
.BR [0-9A-Za-z] ,
jedoch hängt die zweite Form ab von der \s-1POSIX\s0-Ländereinstellung
und \s-1ASCII\s0-Kodierung der Zeichen, während die erste Form davon
unabhängig ist.  (Man beachte, dass die eckigen Klammern Teil des
symbolischen Namens der einzelnen Klassen sind.  Zusätzlich dazu müssen
noch die eckigen Klammern angegeben werden, die eine Liste von Zeichen
begrenzen.)  Die meisten Metazeichen verlieren innerhalb einer
Zeichenkette ihre besondere Bedeutung.  Um ein
.B ]
selbst zu beschreiben, muss es an erster Stelle der Kette gesetzt
werden.  Soll
.B ^
als gewöhnliches Zeichen auftreten, darf es nicht an erster Stelle
stehen.  Das Zeichen
.B \-
selbst muss an letzter Stelle der Kette auftauchen.
.PP
Der Punkt
.B .
passt auf jedes beliebige, einzelne Zeichen.
Das Symbol
.B \ew
ist ein Synonym für
.BR [[:alnum:]] ,
.B \eW
ein Synonym für
.BR [^[:alnum]] .
.PP
Das Dach
.B ^
und das Dollarzeichen
.B $
sind Sonderzeichen, die auf die leere Zeichenkette am Anfang
beziehungsweise Ende einer Zeile passen.  Ganz ähnlich passen die
Symbole
.B \e<
und
.B \e>
auf die leere Zeichenkette am Anfang beziehungsweise Ende eines Wortes.
Das Symbol
.B \eb
passt auf die leere Zeichenkette an einem Wortrand;
.B \eB
bezeichnet das Gegenteil davon und passt auf die leere Zeichenkette,
falls die sich
.I nicht
an einem Wortrand befindet.
.PP
Ein regulärer Ausdruck kann gefolgt werden von einem oder mehreren
Wiederholungsoperatoren:
.PD 0
.TP
.B ?
Das vorhergehende Objekt ist optional und tritt höchstens einmal auf.
.TP
.B *
Das vorhergehende Objekt tritt kein Mal oder beliebig oft auf.
.TP
.B +
Das vorhergehende Objekt tritt ein- oder mehrmals auf.
.TP
.BI { n }
Das vorhergehende Objekt tritt genau
.IR n -mal
auf.
.TP
.BI { n ,}
Das vorhergehende Objekt tritt mindestens
.IR n -mal
oder öfter auf.
.TP
.BI { n , m }
Das vorhergehende Objekt tritt mindestens
.IR n -
und höchstens
.IR m -mal
auf.
.PD
.PP
Zwei reguläre Ausdrücke können aneinander gefügt werden.  Der
entstehende reguläre Ausdruck passt auf jede Zeichenkette, die aus zwei
aneinander gesetzten Teilketten besteht, sofern jede der Teilketten auf
den zugehörigen regulären Teilausdruck passt.
.PP
Sind zwei reguläre Ausdrück durch den Infix-Operator
.B |
verbunden, so passt der gesamte reguläre Ausdruck auf jede Zeichenkette,
die auf mindestens einen der beiden Teilausdrücke passt.
.PP
Wiederholungsoperatoren besitzen höhere Priorität als eine
Aneinanderreihung. Am niedrigsten ist die Priorität der Alternative.
Einzelne Teilausdrücke können in Klammern gesetzt werden, um diese
Regeln explizit abzuändern.
.PP
Die Rückwärtsreferenz
.BI \e n\c
\& - wobei
.I n
für eine einzelne Ziffer steht -, passt auf die Zeichenkette, die
wiederum auf den vorhergehenden, eingeklammerten Teilausdruck Nummer
.I n
des regulären Ausdrucks gepasst hat.
.PP
In gewöhnlichen regulären Ausdrücken besitzen die Metazeichen
.BR ? ,
.BR + ,
.BR { ,
.BR } ,
.BR | ,
.B (
und
.B )
keine besondere Bedeutung.  Statt dessen können die mit einem Rückstrich
geschützten Versionen
.BR \e? ,
.BR \e+ ,
.BR \e{ ,
.BR \e} ,
.BR \e| ,
.B \e(
und
.B \e)
verwendet werden.
.PP
Das Metazeichen
.B {
wurde im ursprünglichen
.B egrep
nicht unterstützt.  Andere Implementierungen unterstützen statt dessen
.BR \e{ ,
so dass portable Skripte
.B {
in
.BR egrep -Mustern
generell vermeiden sollten.  Als Alternative kann
.B [{]
verwendet werden, um das Zeichen
.B {
selbst zu beschreiben.
.PP
\s-1GNU\s0
.B egrep
versucht, das ursprüngliche Verhalten zu unterstützen indem es annimmt,
dass
.B {
keine besondere Bedeutung besitzt, falls es eine ungültige
Intervallbeschreibung einleiten würde.  So sucht beispielsweise das
Kommando
.B "egrep '{1'"
nach der zwei Zeichen langen Zeichenkette
.BR {1 ,
statt einen fehlerhaften regulären Ausdruck zu melden.
Dieses Verhalten ist in \s-1POSIX.2\s0 als Erweiterung erlaubt.
Portable Skripte sollten darauf jedoch nicht vertrauen.
.SH UMGEBUNGSVARIABLEN
.TP
.B GREP_OPTIONS
Mit Hilfe dieser Variable lassen sich Standardoptionen definieren, die vor
alle explizit angegebenen Optionen gesetzt werden. Enthält
.B GREP_OPTIONS
beispielsweise
.BR "'\-\^\-binary-files=without-match \-\^\-directories=skip'" ,
so verhält sich
.BR grep ,
als ob die beiden Optionen 
.B \-\^\-binary-files=without-match
und
.B \-\^\-directories=skip
auf der Kommandozeile vor allen weiteren Optionen angegeben worden
wären. Mehrere Optionen werden durch Leerzeichen getrennt. Ein
Rückstrich schützt das folgende Zeichen, so dass auch Optionen angegeben
werden können, die selbst Leerzeichen oder Rückstriche enthalten.
.TP
\fBLC_ALL\fP, \fBLC_MESSAGES\fP, \fBLANG\fP
Diese Variablen wählen die
.BR LC_MESSAGES -Ländereinstellung
aus, die festlegt, in welcher Sprache
.B grep
seine Meldungen ausgibt. Die Ländereinstellung wird in der angegebenen
Reihenfolge durch die erste gesetzte Variable bestimmt. Falls keine der
Umgebungsvariablen gesetzt, der Katalog von Meldungen in der
gewünschten Sprache nicht verfügbar oder
.B grep
ohne Mehrsprachenunterstützung (\s-1NLS\s0) übersetzt worden ist, wird
amerikanisches Englisch verwendet.
.TP
\fBLC_ALL\fP, \fBLC_CTYPE\fP, \fBLANG\fP
Diese Variablen legen die
.BR LC_CTYPE -Ländereinstellung
fest.  Sie bestimmt den Typ eines jeden Zeichens, beispielsweise welche
Zeichen als Leerraum angesehen werden, welche als Sonderzeichen und
welche als Buchstaben. Die Ländereinstellung wird in der angegebenen
Reihenfolge durch die erste gesetzte Variable bestimmt. Falls keine der
Umgebungsvariablen gesetzt oder
.B grep
ohne Mehrsprachenunterstützung (\s-1NLS\s0) übersetzt worden ist, wird
die \s-1POSIX\s0-Einstellung verwendet.
.TP
.B POSIXLY_CORRECT
Falls gesetzt, verhält sich
.B grep
strikt nach dem \s-1POSIX.2\s0-Standard, andernfalls ähnelt sein
Verhalten eher dem anderer \s-1GNU\s0-Programme.
\s-1POSIX.2\s0 verlangt, dass Optionen, die nach einem Dateinamen
angegeben sind, als Dateinamen behandelt werden. Normalerweise
behandelt
.B grep
sie immer als Optionen, gleichgültig an welcher Stelle sie
auftreten.  Ferner verlangt \s-1POSIX.2\s0, unbekannte Optionen als
\*(lqunzulässig\*(rq anzuzeigen.  In den Standardeinstellungen meldet
.B grep
sie lediglich als \*(lqungültig\*(rq.
.B POSIXLY_CORRECT
deaktiviert auch \fB_\fP\fIN\fP\fB_GNU_nonoption_argv_flags_\fP,
das unten genauer beschrieben ist.
.TP
\fB_\fP\fIN\fP\fB_GNU_nonoption_argv_flags_\fP
.RI ( N
ist hier die numerische Kennung des
.BR grep -Prozesses.)
Falls das
.IR i -te
Zeichen dieser Umgebungsvariable den Wert
.B 1 
besitzt, wird das
.IR i -te
Argument von
.B grep
nicht als Option verarbeitet, selbst wenn es wie eine Option aussieht.
Ein Kommandozeileninterpreter kann diese Umgebungsvariable setzen um
anzuzeigen, welche der Argumente erzeugt worden sind durch
Mustererkennung von Dateinamen und deshalb keinesfalls als Optionen
berücksichtigt werden sollen.  Diese Verhalten steht nur in Verbindung
mit der \s-1GNU\s0 C-Bibliothek zur Verfügung und nur dann, wenn
.B POSIXLY_CORRECT
nicht gesetzt ist.
.SH DIAGNOSE
.PP
Normalerweise zeigt ein Rückgabewert von 0 an, dass Treffer gefunden
worden sind, und 1, dass es keine Treffer gab.  (Die Option
.B \-v
kehrt die Bedeutung der Rückgabewerte um.)  Ein Rückgabewert von 2
zeigt ein fehlerhaftes Suchmuster an, unzugängliche Eingabedateien oder
andere Systemfehler.
.SH FEHLER
.PP
Berichte über Fehler in
.B grep
sollten per E-Mail an
.BR bug-gnu-utils@gnu.org 
geschickt werden.  Die Betreff-Zeile sollte das Wort \*(lqgrep\*(rq enthalten.
.PP
Wiederholungsangaben im Konstrukt
.BI { m , n }
können dazu führen, dass
.B grep
große Mengen Speicherplatz verbraucht.  Darüber hinaus gibt es noch
weitere ungewöhnliche reguläre Ausdrücke, deren Verarbeitung
exponentiell viel Zeit und Speicher benötigt und dazu führen kann, dass
.B grep
den Speicherplatz erschöpft.
.PP
Rückwärtsreferenzen sind sehr langsam und können exponentiell viel Zeit
in Anspruch nehmen.
.\" Work around problems with some troff -man implementations.
.br