|
Einführung und TutorialSed |
Reguläre Ausdrücke
Wenn Sie tiefer in die Theorie der regulären Ausdrücke eindringen wollen,
empfehlen wir Ihnen die Webseite python-kurs.eu, auch wenn es dort um Python geht.
Die Einführung ist aber sehr allgemein mit vielen Beispielen gehalten, siehe
Reguläre Ausdrücke und Reguläre Ausdrücke für Fortgeschrittene. Noch besser
mehr zu empfehlen sind die englischen Versionen, für diejenigen, die Englisch können:
Introduction into Regular Expressions und
Advanced Regular Expressions
EinführungReguläre Ausdrücke sind für die meisten Linux/Unix Tools und Skript-Sprachen, wie z.B. Perl und Python, essentiell, deshalb sollte sich jeder, der ernsthaft mit Linux arbeiten will, die Mühe machen, sie zu verstehen. Auch wenn einem am Anfang ein Ausdruck wie^[0-9]+\.[0-9][0-9] *EUR recht kryptisch vorkommen mag, so kann man es bald mit ein wenig Übung wie eine Überschrift in der Tageszeit lesen. Damit die folgenden Beispiele nicht allzu trocken sind, werden wir Heinrich Heines Lorelei als zu filternde Beispieldatei wenn möglich verwenden. Speichern Sie das Gedicht bitte als heine.txt, wenn Sie die folgenden Beispiele nachvollziehen wollen. Ein regulärer Ausdruck in Linux (ebenso wie in Unix) beschreibt ein Textmuster (text pattern), welches eine Folge von Zeichen definiert. grepEin recht einfaches aber dennoch mächtiges Tool, welches reguläre Ausdrücke benutzt, ist das Kommando grep, bzw. fgrep und egrep.grep "Schiff" heine.txt liefert als Ausgabe alle Zeilen, die das Wort "Schiff" enthalten: Den Schiffer im kleinen Schiffe Am Ende Schiffer und Kahn;Stellen wir uns nun vor, dass wir eine Zeile suchen, von der wir wissen, dass das Wort oder "kämmt" drin vorkommt und außerdem das Wort "Kamme". Diese Aufgabe kann man elegant mit einem einfachen regulären Ausdruck lösen. Zunächst muss man wissen, dass eine Punkt "." innerhalb eines regulären Ausdrucks für ein beliebiges Zeichen steht. Ein Stern "*" heißt, dass das vor ihm stehende Zeichen beliebig oft vorkommen kann (also auch überhaupt nicht!). Der Ausdruck ".*" passt also auf eine beliegige Zeichenkette. grep "kämmt.*Kamme" heine.txtliefert die gewünschte Zeile: Sie kämmt es mit goldenem KammeMöchten wir nun alle Zeilen herausfiltern, in denen entweder das Wort "Jungfrau" oder das Wort "Lorelei" vorkommt, so lässt sich dies mit grep nicht mehr elegant bewerkstellen. Um diese Aufgabe zu lösen benötigen wir egrep, was jedoch im Prinzip das gleiche ist, als würde man grep mit der Option "-E" aufrufen. Egrep kann erweiterte reguläre Ausdrücke verarbeiten. egrep "Jungfrau|Lorelei" heine.txtliefert die beiden Zeilen, die jeweils eines der beiden Suchwörter enthalten: Die schönste Jungfrau sitzet Die Lorelei getan.Sonderzeichen in regulären Ausdrücken und ihre Bedeutung:
Eckige Klammern leiten eine Menge von Zeichen ein. Genau ein Zeichen aus dieser Menge, kann im String an dieser Stelle vorkommen. Innerhalb einer soclen Menge, haben einige Sonderzeichen wieder Sonderbedeutungen: ^ als erstes Zeichen einer Zeichenmenge negiert die Zeichenmenge. Dies gilt jedoch wirklich nur, wenn ^ wirklich als ersten Zeichen steht. Mit - kann man einen Bereich definieren, zB. [0-9] definiert alle Ziffern von 0 bis 9. |
© Copyright 2004 - 2008, Bodenseo, Linux-Kurse am Bodensee, Bernd Klein