IT-Academy Logo
Sign Up Login Help
Home - Betriebssysteme - Unix - Reguläre Ausdrücke in UNIX



Reguläre Ausdrücke in UNIX

Aufbau und Nutzung regulärer Ausdrücke unter UNIX.


Autor: Tobias Surmann (incsoft)
Datum: 26-12-2003, 21:06:42
Referenzen: keine
Schwierigkeit: Anfänger
Ansichten: 6505x
Rating: 8 (2x bewertet)

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



Einleitung

In Windows (bzw. DOS) kennt man nur zwei Jokerzeichen, um verschiedene Begriffe unter einem Suchbegriff anzusprechen, * und ?. Damit kann man kein oder mehrere beliebige Zeichen (*), oder genau ein beliebiges Zeichen finden (?).

Unter UNIX kann man seine Suchbegriffe sehr viel genauer formulieren - mit Hilfe der sogenannten regulären Ausdrücke (engl. regular expressions). Wir werden diese im Verlauf des Artikels anhand des Kommandos grep genauer untersuchen. Dieser Befehl kann auf der Shell ausgeführt werden und liefert die Zeile in der der Text gefunden wurde (mit Flag -n), sowie die komplette Zeile in dem der Ausdruck steht, der von grep erkannt wurde. Wir werden grep in diesem Artikel auf eine Textdatei anwenden, um diese zu durchsuchen. Daher empfiehlt es sich, mit kedit eine entsprechende Textdatei im Homeverzeichnis anzulegen:

greptest.txt

Meier
Meyer
Meyr
Meir
Maier
Mayer
Mayr
Mair
Bei der Eingabe sollte beachtet werden, dass die Übergabe des Suchbegriffs an das Kommando grep mit umschließenden Anführungszeichen erfolgen sollte, da dieser ansonsten von der Shell interpretiert werden würde.

Sonderzeichen

Um erfolgreich mit regulären Ausdrücken zu arbeiten, muss man einige wesentliche Sonderzeichen kennen, denen eine besondere Bedeutung zukommt und die im folgenden aufgelistet sind:

cEin konstantes Zeichen c
.Genau ein beliebiges Zeichen
.*Beliebig viele Zeichen, auch das Leerwort
*Das dem Sternchen vorangehende Zeichen kein, ein- oder mehrmals
?Das dem Fragezeichen vorangehende Zeichen kein oder einmal
+Das dem Pluszeichen vorangehende Zeichen mindestens einmal
{n,m}Wiederholungsintervall. Das der Klammer vorangehende Zeichen n bis m mal
{n}Ein präziseres Wiederholungsintervall. Das der Klammer vorangehende Zeichen n mal
[...]Eines der Zeichen aus der Klammer
[...-...]Alle Zeichen von ... bis ...
[^...] [^...-...]Umkehrung der beiden vorhergehenden Klammern: keines der Zeichen aus der Klammer
^Zeilenanfang
$ Zeilenende
<Wortanfang
>Wortende
a1|a2Alternative Ausdrücke, entweder Ausdruck a1 oder Ausdruck a2
(...)Gruppierung von Ausdrücken durch Klammerung
\Dem nachfolgenden Zeichen kommt keine besondere Bedeutung zu (z. B. "\." für einen Punkt (der Punkt ist ja selbst ein Sonderzeichen))


Beispiel

In der Datei greptest.txt befinden sich mehrere Variationen des Namens Meier. Gesucht wird nun ein regulärer Ausdruck, der alle Variationen findet.
M(a|e)(i|y)(e)?r
Der Ausdruck bedeutet folgendes: Zu suchen ist ein Wort, welches mit M anfängt. Darauf folgt ein a oder ein e, worauf wiederum entweder ein i oder ein y folgen kann. Das e kann ein oder keinmal vorkommen. Am Ende des Namens steht immer ein r.

Der Aufruf in der Shell sieht somit wie folgt aus:
grep -n "M(a|e)(i|y)(e)?r" greptest.txt
Es werden alle Variationen von Meier aufgelistet (mit Zeilennummer). Experimentieren Sie ein wenig herum, es gibt noch einige weitere reguläre Ausdrücke mit denen man "Meiers" finden kann. Falls eine Zeilennummer fehlt, wissen Sie sofort, dass der Ausdruck in der Form noch nicht korrekt sein kann.

Fazit

Mit Hilfe regulärer Ausdrücke hat man vielfältige Möglichkeiten einen oder mehrere gesuchte Begriffe genauer zu beschreiben; man muss lediglich die Struktur erkennen und durch Einsatz der Sonderzeichen präzise angeben.


[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04508
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16552
Queueeinträge:06246
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1154
Comments: 0