Einfaches Erstellen von regulären Ausdrücken

Wizard in der Shell

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.

Wer kennt nicht den Ärger über den regulären Ausdruck, der partout nicht auf das gewünschen Textmuster passen will? Oder die bittere Erkenntnis, dass die Regex zwar in der Programmiersprache Perl greifen würde – im aktuellen Lisp-Code, an dem Sie gerade arbeiten, jedoch nicht?

Hier hilft der Regex-Wizard Txt2regex, den wir uns näher anschauen wollen. Der Wizard verarbeitet Textmuster für die unterschiedlichsten Programme und Sprachen, von Awk über Emacs bis hin zu Perl, Procmail, Sed und Vim. Er besteht im wesentlichen aus einem Shell-Skript, dass eine Bash ab Version 2.04 voraussetzt. Obwohl diese Mindestanforderung mit jeder halbwegs aktuellen Linux-Distribution gegeben sein sollte, können Sie sie mit den Befehlen echo $BASH_VERSION oder bash --version prüfen. Wenn die Versionsnummer in Ordnung ist, steht einer Installation nichts mehr im Wege.

Sollte Ihre Distribution den Wizard nicht zur Installation bereithalten, finden Sie ihn als Tar-Archiv auf der Download-Seite des Projektes [1]. Als Debian-Anwender genügt der Befehl apt-get install txt2regex, um das Tool zu installieren.

Nach dem Download entpacken Sie zunächst das Archiv und wechseln anschließend in das neu entstandene Verzeichnis:

[andreas]~ > tar xvzf txt2regex-0.7.tgz
[andreas]~ > cd txt2regex-0.7

Da Sie das Programm nicht kompilieren müssen, genügt das Kommando make install als root:

[andreas]~ > su
Password: (Ihr root-Passwort)
root# make install

Dieses Vorgehen birgt jedoch den Nachteil, dass die Programmteile in die Verzeichnisse /usr/bin und /usr/share/locale geschrieben werden – ein Ort, in dem distributionsfremde Installationen in der Regel nichts zu suchen haben. Um die Zielverzeichnisse anzupassen, geben Sie dem Befehl make install die Variablen BINDIR und LOCALEDIR mit auf den Weg:

root# make install BINDIR=/usr/local/bin LOCALEDIR=/usr/local/share/locale
compiling de_DE.po…ok
compiling id_ID.po…ok
compiling ja.po…ok
compiling pl_PL.po…ok
compiling pt_BR.po…ok
program 'txt2regex' installed. just run /usr/local/bin/txt2regex

Nun befinden sich die Programmteile in den Pfaden /usr/local/bin und /usr/local/share/locale. Alternativ zu dieser Vorgehensweise können Sie die entsprechenden Variablen im Makefile txt2regex-0.7/Makefile anpassen. Die Variable MANDIR findet im Makefile der Version 0.7 keine weitere Beachtung. Kopieren Sie die Datei txt2regex-0.7/txt2regex.man zum Beispiel in das Verzeichnis /usr/local/man/man1/, um sie in Zukunft mit dem Befehl man txt2regex aufzurufen:

root# cp txt2regex.man /usr/local/man/man1/txt2regex.1

Das Programm ist jetzt bereit zum Einsatz. Sie starten es mit dem Kommando txt2regex in der Shell.

Optionen

Sehen wir uns zuerst die Optionen der Kommandozeile an, die das Tool bietet. Eine Basiseinstellung betrifft den Hintergrund der virtuellen Textkonsole oder des Xterms, in dem Sie arbeiten. Auf einem hellen Hintergrund ist die Ausgabe des Wizards lesbarer, wenn Sie ihn mit dem Parameter --whitebg starten:

[andreas]~ > txt2regex --whitebg

Völlig farblos präsentiert sich txt2regex mit der Option --nocolor. Um von vornherein die Programme festzulegen, deren Regex das Skript anzeigt, benötigen Sie die Opttion --prog. Im folgenden Beispiel zeigt das Tool die regulären Ausdrücke der Editoren Vim und Emacs und der Programmiersprachen Visual Basic Script und Perl an:

[andreas]~ > txt2regex --prog vim,emacs,vbscript,perl

Um alle möglichen Regex-Varianten anzuzeigen, nutzen Sie den Parameter --all. Es kann passieren, dass das Programm sich selbst im großen Xterm mit der Meldung beendet, Ihr Bildschirm verfüge nicht über genügend Zeilen. Abhilfe schafft hier der vorhergehende Befehl export COLUMNS LINES in der Bash, bevor Sie txt2regex --all starten.

Eine weitere wichtige Option ist --history. Dieser Parameter lädt einen bereits erarbeiteten Ausdruck:

[andreas]~ > txt2regex --history '13¤http://www.linux-user.de'

Das Kürzel 13¤http://www.linux-user.de wird dann als Regex in verschiedenen Programmsprachen dargestellt. Nachdem Sie einen Ausdruck fertiggestellt haben, zeigt Ihnen das Programm das entsprechende Kürzel für die History-Option an. Eine Liste der Meta-Zeichen eines Programms liefert Ihnen der Aufruf --showinfo:

[andreas]~ > txt2regex --showinfo egrep
  Programm  egrep: egrep (GNU grep) 2.4.2
     metas  . [] [^] * + ? {} | ()
  esc meta  \
  need esc  \.*[{()|+?^$
  \t in []  NEIN
 [:POSIX:]  JA

In der ersten Zeile finden Sie den Programmnamen, in diesem Falle egrep. Darunter stehen die Angaben zu den Meta-Zeichen, welche Sonderzeichen maskiert werden müssen oder den Posix-Klassen. Nähere Informationen zu diesem Thema finden Sie unter [2] oder zu egrep auf Ihrem Rechner mit dem Befehl man egrep.

Frage und Antwort

Nach dem Start des Wizards (Abb. 1) sehen Sie in dessen oberen Feld die Angaben Verlassen, zurückstellen, Farbe sowie Programme. Durch Druck auf die Punkt-Taste bedienen, beenden Sie den Editor. Dieser gibt ein Regex-Kürzel aus, dass sie, wie bereits besprochen, über die Option --history verwenden. Außerdem zeigt er Ihnen die Aufschlüsselung Ihres Textmusters an, das Sie verwendet haben, beispielsweise: Beginn der Übereinstimmung am Zeilenanfang, gefolgt von einer Buchstabenfolge...

Abbildung 1: Die Startansicht von txt2regex.

Der Auswahlpunkt zurückstellen setzt durch den Druck der Taste [0] alle Eingaben auf Null zurück. Die Sternchen-Taste [*] schaltet hingegen die Farbe ein oder aus. Den wichtigsten Menüpunkt Programme steuern Sie durch den Schrägstrich [/]. Von hier gelangen Sie in eine Übersicht der Programme, mit deren regulären Ausdrücken Sie arbeiten wollen (Abbildung 2).

Abbildung 2: Die Auswahl der Programmsprachen

Jetzt beginnt ein Frage- und Antwort-Spiel, mit dem Sie Ihren Ausdruck definieren. Die ersten Informationen betreffen den Beginn der Übereinstimmung des Musters. Sie werden gefragt, ob es sich am Zeilenanfang oder irgendwo in der Zeile befinden soll. Ihre Antwort geben Sie durch einen Druck auf die Taste [1] (Zeilenanfang) oder [2] (irgendwo). Ihre Eingaben erscheinen in reguläre Ausdrücke übersetzt in den Regex-Feldern der angegebenen Programme.

Nach dieser Auswahl öffnet sich eine Ansicht mit der Überschrift gefolgt von:. Sie umfasst neun nummerierte Punkte, die von einem beliebigen Zeichen über eine Liste verbotener Zeichen bis zu etwas Beliebigen reichen.

Haben Sie die Option der erlaubten oder verbotenen Zeichen ausgesucht, werden Sie gefragt welche dies sein sollen. Im nächsten Schritt fragt Sie der Editor wie oft diese Zeichen vorkommen sollen und bietet Ihnen von einmal bis weniger als N mal sieben Möglichkeiten an.

Anschließend gelangen Sie erneut in die Ansicht mit der Überschrift gefolgt von:. Nehmen Sie diesmal den Punkt Buchstabenfolge, werden Sie zum Schreiben des gewünschten Textes aufgefordert. Hinter Punkt 7, der eine POSIX-Kombination festlegt, verbirgt sich eine alphabetische Liste, die Buchstaben, Zahlen, Hexadezimalzahlen oder grafische Zeichen umfasst. Die Punkt-Taste befördert Sie aus dem Posix-Menü.

Auf diese Weise erarbeitet der Wizard ein Textmuster für Sie, ohne dass Sie sich tiefer mit dessen Sonderzeichen beschäftigen müssen. Ist Ihr Ausdruck fertig, schließen Sie mit einem Punkt.

Glossar

Regex

Abkürzung von Regular Expression (dt. regulärer Ausdruck). Eine Kombination aus speziellen Zeichen, die von einem Programm zur Suche von definierten Zeichenketten verwendet werden.

Infos

[1] Homepages des Projektes: http://txt2regex.sourceforge.net/

[2] Artikel zu RegEx: Marc Andre Selig, "Nadel im Heuhaufen", LinuxUser 08/2002, S. 74

LinuxCommunity kaufen

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

Deutschland

Ähnliche Artikel

  • Suchen und Finden mit Regulären Ausdrücken
    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.
  • 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.
  • Besser finden
    Das kleine Werkzeug Agrep erweitert die Möglichkeiten beim Durchstöbern von Texten um die unscharfe Suche.
  • 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...