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

  • 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.
  • 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.
  • 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.
  • LaTeX-Dokumente automatisiert kompilieren
    Wer gelegentlich mit LaTeX arbeitet, der profitiert von einem sauber geschriebenen Skript, das beim Übersetzen der Quelldateien hilft.
  • Surfen in der Shell
    Der Webbrowser W3m beherrscht Tabs, Grafiken und das Rendern von Frames, lässt sich per Maus steuern und bindet externe Programme ein – und das alles in einer Konsole.
Kommentare

Infos zur Publikation

LU 12/2014: ANONYM & SICHER

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

Ubuntu 14.10 und VirtualBox
Ubuntu 14.10 und VirtualBox
Tim Schürmann, 08.11.2014 18:45, 0 Kommentare

Wer Ubuntu 14.10 in einer virtuellen Maschine unter VirtualBox startet, der landet unter Umständen in einem Fenster mit Grafikmüll. Zu einem korrekt ...

Aktuelle Fragen

Nach Ubdates alles weg ...
Maria Hänel, 15.11.2014 17:23, 4 Antworten
Ich brauche dringen eure Hilfe . Ich habe am wochenende ein paar Ubdates durch mein Notebook von...
Brother Drucker MFC-7420
helmut berger, 11.11.2014 12:40, 1 Antworten
Hallo, ich habe einen Drucker, brother MFC-7420. Bin erst seit einigen Tagen ubuntu 14.04-Nutzer...
Treiber für Drucker brother MFC-7420
helmut berger, 10.11.2014 16:05, 2 Antworten
Hallo, ich habe einen Drucker, brother MFC-7420. Bin erst seit einigen Tagen ubuntu12.14-Nutzer u...
Can't find X includes.
Roland Welcker, 05.11.2014 14:39, 1 Antworten
Diese Meldung erhalte ich beim Versuch, kdar zu installieren. OpenSuse 12.3. Gruß an alle Linuxf...
DVDs über einen geeigneten DLNA-Server schauen
GoaSkin , 03.11.2014 17:19, 0 Antworten
Mein DVD-Player wird fast nie genutzt. Darum möchte ich ihn eigentlich gerne abbauen. Dennoch wür...