Strukturierte Suche

Suchen und Finden mit Regulären Ausdrücken

01.08.2005
Zum wichtigsten Handwerkszeug bei der Suche in Texten und auf der Festplatte zählen Regular Expressions. Trotz ihrer scheinbar komplexen Struktur lassen sie sich schnell meistern.

Das Suchen von Dateien oder bestimmten Inhalten innerhalb von Dateien ist ein immer wiederkehrendes Vergnügen für jeden, der sich mit Datenverarbeitung im weitesten Sinne beschäftigt. Wie in nahezu allen Bereichen hält die Unix-Welt auch auf diesem Gebiet verschiedene Herausforderungen bereit, denen man sich stellen kann. Meisterschaft auf dem Gebiet der Datensuche hat erreicht, wer die so genannten "Regulären Ausdrücke", oder Regex oder RE (von engl. "regular expressions") beherrscht. Über die korrekte deutsche Pluralbildung von Regex gibt es unter den Benutzern Unstimmigkeiten. Im Deutschen hat sich der Ausdruck "Regexe" weitgehend eingebürgert, den wir auch im Folgenden verwenden.

Viele Programme in der Unix-Welt (aber auch darüber hinaus) ermöglichen die Verwendung von Regexen. Einige prominente Vertreter sind Sed, Awk, Mutt, Vi, Procmail, Emacs und diverse Shells. In der Gruppe der Programmiersprachen hat vor allem Perl auf dem Gebiet der Regexe Zeichen und Standards gesetzt. Mittlerweile gibt es aber Regex-Unterstützung auch für Python, Java, .NET und C.

Reguläre Ausdrücke wirken ein bisschen wie Schweizer Taschenmesser: Auf den ersten Blick nicht sehr elegant und auch nicht schön anzusehen. Außerdem scheinen sie viele Funktionen zu bieten, von denen man sich kaum vorstellen kann, sie jemals gebrauchen zu können. Auf den zweiten Blick aber sind sie ungemein nützlich. Hat man sich erstmal an sie gewöhnt, fragt man sich immer wieder, wie man jemals ohne sie auskommen konnte.

Larry Wall, der Erfinder von Perl, hat einmal gesagt, ein guter Programmierer brauche nur drei Tugenden: Faulheit, Ungeduld und Selbstüberschätzung [1]. Wenn Sie diese drei Tugenden mitbringen, dann werden Sie sich schnell mit den Regulären Ausdrücken anfreunden. Auch wenn die Regexe auf den ersten Blick genauso trocken aussehen, wie ihr Name klingt: Nach nur einer kurzen Gewöhnungszeit bereiten Ihnen auch komplizierte Ausdrücke keine Probleme mehr.

Alte Bekannte

Wenn Sie sich alle Dateien eines Verzeichnisses auflisten wollen, die auf den Suffix .txt enden, dann verwenden Sie bereits wie selbstverständlich einen Regex, indem Sie ls -l *.txt eingeben. Das Sternchen (*) bedeutet in diesem Zusammenhang (stark vereinfacht): eine beliebige Anzahl beliebiger Zeichen. Es werden also alle Dateien aufgelistet, deren Name aus einer beliebigen Zahl beliebiger Zeichen, gefolgt von ., t, x, t besteht.

Machen wir uns noch klar, dass nicht nach dem eigentlich Zeichen * als Teil des Dateinamens gesucht wird. Das Zeichen * steht hier für etwas anderes (eine beliebige Anzahl beliebiger Zeichen), daher bezeichnen wir es als Metazeichen. Von den kaum zählbaren existierenden Metazeichen stellen wir Ihnen in diesem Artikel einige wenige, aber grundlegende vor.

Reguläre Ausdrücke bestehen also aus Zeichen, die tatsächlich Teil des Musters sind, das erkannt werden soll, und aus Metazeichen, die etwas beschreiben: zum Beispiel mehrere Zeichen, Zeichengruppen und so fort. In anderen Regex-Dialekten kann das Sternchen andere Bedeutungen annehmen, wie wir später sehen werden. Der geläufigste Regex-Dialekt, den wir uns im Folgenden näher ansehen, ist das so genannte "Perl-kompatible" Regex.

Einfache Mustererkennung mit Egrep

Das Suchen von Inhalten innerhalb von Dateien bildet das Metier des Programms egrep, das unter jeder Linux-Installation zur Verfügung stehen sollte. Die einfachste Anwendung ist die Suche nach bestimmten, klar definierten Mustern, das so genannte Pattern Matching. Nähere Informationen zu Egrep erhalten Sie durch die Eingabe von man egrep oder unter [2].

Nehmen wir an, wir verfügen über eine ausgesprochen umfangreiche Textdatei, die Kurzbeschreibungen verschiedener deutscher Städte beinhaltet, welche nicht alphabetisch sortiert sind. Als Beispiel dient uns die Aufstellung aus Listing 1. Um nachzusehen, ob die Liste auch die Stadt Hamburg umfasst, hilft die Eingabe von

egrep -i 'Hamburg' stadtliste.txt

weiter. Der Schalter -i ist ausgesprochen hilfreich, denn er veranlasst egrep, Groß- und Kleinschreibung zu ignorieren; den eigentlichen Reguläre Ausdruck (Hamburg) übergibt man in Hochkommata.

Listing 1

stadtliste.txt

Hamburg
Berlin
Frankfurt
München
Harburg
Bad Homburg
Bad Nauheim
Idstedt
Idstein
Friedrichsbad
Baden-Baden

Falls Ihnen das Verwenden der Kommandozeile größeres Unbehagen bereitet, können Sie selbstverständlich auch einen handelsüblichen Editor verwenden. Die Suchfunktion der KDE-Oberfläche beispielsweise unterstützt Regexe vorbehaltlos (Abbildung 1). egrep bietet aber immense Vorteile, unter anderem das Suchen in mehreren Verzeichnissen und Dateien.

Abbildung 1: Suchfunktion mit Regex-Unterstützung bei KDE.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Einfaches Erstellen von regulären Ausdrücken
    Wo reguläre Ausdrücke für den Profi ein Denksport sind, steht der Anfänger verzweifelt vor einem Dickicht an Kürzeln und Zeichen. Für den Durchblick sorgt der Editor txt2regex.
  • Zu Befehl: Suchen mit grep, egrep, fgrep, (b)zgrep
    Für die Suche nach Wörtern und Ausdrücken in Textdateien bieten sich die Kommandos der grep-Familie an. Als Ergebnis zeigen sie wahlweise die gefundenen Zeilen, die Namen der Dateien, in denen das Suchmuster vorkommt, oder die Anzahl der Treffer an.
  • Erste Schritte mit Regular Expressions
    Computer erleichtern die Arbeit – man muss ihnen nur genau sagen, was sie tun sollen. Mit regulären Ausdrücken beschleunigen Sie das Suchen und Ersetzen von Zeichenketten auf elegante Art.
  • Reguläre Ausdrücke
    Regulären Ausdrücken begegnet man auf Unix-Systemen an allen Ecken und Enden. Doch was genau hat es damit auf sich, und wie nutzt man sie?
  • Mit PAC auf entfernte Rechner zugreifen
    PAC verhilft Linux-Admins zu einem schönen Leben: Das pfiffige Werkzeug macht nicht nur den Zugriffe auf entfernte Rechner bequemer, sondern automatisiert dabei gleich noch gängige Arbeitsabläufe.
Kommentare

Infos zur Publikation

LU 11/2014: VIDEOS BEARBEITEN

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Artikelsuche
Erwin Ruitenberg, 09.10.2014 07:51, 1 Antworten
Ich habe seit einige Jahre ein Dugisub LinuxUser. Dann weiß ich das irgendwann ein bestimmtes Art...
Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 6 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...