Geschrieben von Zeph Grunschlag
egrep ist ein Akronym für „Extended Global Regular Expressions Print“. Es ist ein Programm, das eine angegebene Datei Zeile für Zeile durchsucht und Zeilen zurückgibt, die ein Muster enthalten, das mit einem bestimmten regulären Ausdruck übereinstimmt.
Der Standard-Egrep-Befehl sieht wie folgt aus:
egrep<flags> ‚<regularexpression>‘ <filename>
Einige übliche Flags sind: -c, um die Anzahl der erfolgreichen Treffer zu zählen und nicht die tatsächlichen Treffer auszugeben, -i, um die Suche unabhängig von der Groß-/Kleinschreibung zu machen, -n, um die Zeilennummer vor jedem Treffer auszugeben, -v, um das Komplement des regulären Ausdrucks zu nehmen (d.h. die Zeilen auszugeben, die nicht passen), und -l, um die Dateinamen der Dateien mit Zeilen auszugeben, die auf den Ausdruck passen.
Reguläre Ausdrücke gibt es in einer eigenen egrep-Variante (diese ist den regulären Ausdrücken in Emacs, Perl usw. sehr ähnlich.)
(Der griechische Buchstabe ε (epsilon) steht für die leere Zeichenkette)
Einer der Hauptunterschiede zwischen regulären Ausdrücken von egrep und theoretischen regulären Ausdrücken ist, dass in egrep Übereinstimmungen an jeder Stelle der Zeichenkette vorkommen dürfen, während bei der theoretischen Verwendung Übereinstimmungen immer mit dem ersten Zeichen der Zeichenkette beginnen und mit dem letzten Zeichen enden. Nehmen wir zum Beispiel die Zeichenkette 000001000: In egrep ergibt der reguläre Ausdruck 010 eine Übereinstimmung; der theoretische reguläre Ausdruck 010 passt dagegen nicht zu 000001000, da 010 und 000001000 nicht gleich sind. Das theoretische Äquivalent von egrep’s 010 ist (0+1)*010(0+1)*. Was ist, wenn Sie tatsächlich den Anfang und das Ende von Zeichenketten berücksichtigen wollen? egrep stellt Ihnen das Caret-Symbol ^ zur Angabe des Anfangs und das Dollar-Symbol $ für das Ende zur Verfügung. Das egrep-Äquivalent der theoretischen 010 ist also ^010$ .
Ein weiteres nützliches egrepsymbolpaar sind die Wortgrenzen \< und\>, die jeweils den Anfang und das Ende eines Wortes bezeichnen.
Um eine Menge oder einen Bereich von Zeichen anzugeben, verwendet man geschweifte Klammern. Um die Menge zu begrenzen, verwenden Sie das Hütchensymbol ^ als erstes Zeichen. Zum Beispiel
- ist die Menge { a, 9, A, 0, 5 }
- ist die komplementäre Menge ASCII – { a, 9, A, 0, 5 } (alles außer a, 9, A, 0 und 5).
- ist die Menge aller Kleinbuchstaben { a, b, c, d, …, z }
- ist die Menge aller ASCII-Buchstaben außer den Kleinbuchstaben, den Ziffern zwischen 4 und 9 und den Großbuchstaben Q und R.
Ein paar Beispiele:
- egrep ‚^(0|1)+ +$‘ searchfile.txt
Finde alle Zeilen in searchfile.txt, die mit einem nicht leeren Bitstring beginnen, gefolgt von einem Leerzeichen, gefolgt von einem nicht leeren alphabetischen Wort, das die Zeile beendet