Die Alternation

Als Beispiel für die Alternation, die nicht mehr auf einzelnen Zeichen oder einem Zeichenbereich basiert, sondern feste Zeichenketten beliebiger Länge unterscheidet, sollen uns die beiden Orte Idstedt (in Schleswig-Holstein) und Idstein (in Hessen) dienen. Mittels einer Zeichenklasse können Sie zwar einenentsprechendenn Regex formulieren, der bei beiden Städten einen Treffer erzeugt: Idste[id][nt]. Doch gibt es hier ein Problem: Idste[id][nt] findet auch "Idstedn" und "Idsteit". Dies ist bei der Alternation ausgeschlossen:

$ egrep -i 'Idste(in|dt)' stadtliste.txt
Idstedt
Idstein

Unser Regex lauten also in diesem Fall: I, d, s, t, e, gefolgt entweder von der Zeichenkette in oder (|) der Zeichenkette dt.

Im echten Leben

Die bisherigen Beispiele fielen zwar etwas trivial aus, eignen sich jedoch doch zur Bewältigung einiger Herausforderungen des Alltagslebens. Vor allem haben Sie diese Fingerübungen mit den grundlegenden Metazeichen vertraut gemacht, so dass Sie nun Ihre Experimente mit Regulären Ausdrücken vertiefen können. Als erstes komplexeres Beispiel soll uns das Durchsuchen von Mailboxdateien dienen. Vielleicht möchten Sie von einer sehr umfangreichen Mailboxdatei eine Zusammenfassung erstellen, in der nur Absender und Betreffzeile der Nachrichten angezeigt werden. Dies erreichen Sie mit:

$ egrep -i '^(From|Subject): ' <I>Mailbox↩
datei<I>

Angezeigt werden soll jede Zeile, die folgendermaßen aufgebaut ist: Zeilenanfang (^) gefolgt von den Zeichenketten From oder Subject, gefolgt von den Zeichen : und . Hätten Sie nur (From|Subject) verwendet, würden auch Zeilen gefunden werden, in denen etwa "le fromage" (franz. "Käse") vorkommt.

Schon etwas komplexer fällt das Zusammenspiel von Regular Expressions mit procmail aus. Das Programm dient zur Bearbeitung von E-Mail und ist unglaublich flexibel: Man kann automatische Antworten erstellen, E-Mail in bestimmte Ordner sortieren und viele andere Dinge mehr, die mit kaum einem normalen E-Mail-Programm möglich sind. procmail greift ebenfalls auf Regexe zurück.

Einen Auszug aus einer typischen procmail-Konfigurationsdatei finden Sie im unten stehenden Listing. Hier kommt ein weiteres Metazeichen zum Einsatz, der Stern *. Er bezieht sich immer auf das Zeichen, auf das er folgt, und bedeutet: Beliebig oft (auch null Mal). Der Ausdruck .* steht also für irgendein Zeichen (.) und zwar beliebig oft (*).

:0
* ^List-Id.*gnome-bugsquad.gnome.org
in-ML-GNOME-dev-bugs/
:0
* ^List-Id.*b-greek
in-ML-Altgriechisch/

Die Zeichenfolge :0 leitet für procmail eine neue Vorschrift ein. Auf das * folgt nun ein regulärer Ausdruck. procmail durchsucht nun jede E-Mail nach diesem Ausdruck. Erzeugt dieser einen Treffer, wird die E-Mail in den entsprechenden Ordner verschoben, der in der Zeile darunter steht. Die erste Vorschrift dient der Behandlung von Mails der Gnome-Bugsquad-Mailingliste. Jede E-Mail, die über diese Liste verschickt wird, enthält die folgende Zeile:

List-Id: List to discuss bug maintenance ↩
in GNOME <gnome-bugsquad.gnome.org>

Auf diese Zeile passt der erster Regex: ^List-Id.*gnome-bugsquad.gnome.org: Zeilenanfang ^, gefolgt von der Zeichenkette List-Id, gefolgt von einem beliebigen Zeichen . und zwar beliebig oft *, gefolgt von gnome-bugsquad.gnome.org. Entsprechende E-Mails verschiebt procmail in den Ordner in-ML-GNOME-dev-bugs/.

In diesem Zusammenhang spielt der Stern eine wichtige Rolle. Für die Auswertung ist zunächst nur von Bedeutung, dass die Zeile mit der Zeichenkette List-Id einsetzt. Dies signalisiert, dass es sich um eine E-Mail aus einer Mailingliste handelt. Alles folgende interessiert überhaupt nicht und kann mittels .* ignoriert werden. Erst der eindeutige Name gnome-bugsquad.gnome.org ist wieder wichtig, denn er zeigt, um welche Mailingliste es sich handelt.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ä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.
  • Schnipseljagd
    Computer erleichtern die Arbeit – sofern man ihnen genau sagt, was sie tun sollen. Mit regulären Ausdrücken beschleunigen Sie das Suchen und Ersetzen von Zeichenketten auf elegante Art.
  • 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.
  • Gut gefiltert
    Zu den häufigsten Aufgaben bei der Arbeit am Rechner zählt das Durchstöbern von Texten nach Suchmustern. Icgrep bietet hier eine moderne, parallel arbeitende und Unicode-fähige Alternative zum klassischen Grep.
Kommentare

Infos zur Publikation

LU 12/2016: Neue Desktops

Digitale Ausgabe: Preis € 5,99
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

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

Aktuelle Fragen

Drucker Epson XP-332 unter ubuntu 14.04 einrichten
Andrea Wagenblast, 30.11.2016 22:07, 2 Antworten
Hallo, habe vergeblich versucht mein Multifunktionsgerät Epson XP-332 als neuen Drucker unter...
Apricity Gnome unter Win 10 via VirtualBox
André Driesel, 30.11.2016 06:28, 2 Antworten
Halo Leute, ich versuche hier schon seit mehreren Tagen Apricity OS Gnome via VirtualBox zum l...
EYE of Gnome
FRank Schubert, 15.11.2016 20:06, 2 Antworten
Hallo, EOG öffnet Fotos nur in der Größenordnung 4000 × 3000 Pixel. Größere Fotos werden nic...
Kamera mit Notebook koppeln
Karl Spiegel, 12.11.2016 15:02, 2 Antworten
Hi, Fotografen ich werde eine SONY alpha 77ii bekommen, und möchte die LifeView-Möglichkeit nu...
Linux auf externe SSD installieren
Roland Seidl, 28.10.2016 20:44, 1 Antworten
Bin mit einem Mac unterwegs. Mac Mini 2012 i7. Würde gerne Linux parallel betreiben. Aber auf e...