Wizard in der Shell

Einfaches Erstellen von regulären Ausdrücken

01.09.2004
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
 

Ähnliche Artikel

Kommentare

Infos zur Publikation

title_2014_10

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

Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 4 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...
o2 surfstick software für ubuntu?
daniel soltek, 15.07.2014 18:27, 1 Antworten
hallo zusammen, habe mir einen o2 surfstick huawei bestellt und gerade festgestellt, das der nic...