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
 
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.
  • Praktische Online-Helfer für CMS-Einsteiger
    Ob Themes und Templates, Javascript oder Regexe, Responsive Design oder Typografie – der gewiefte Webdesigner erleichtert sich die Arbeit mit den zahlreichen frei im Netz verfügbaren Werkzeugen.
Kommentare

Infos zur Publikation

LU 02/2016: Alt-PCs flott machen

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!       

Der Tipp der Woche

Schon gewußt?

14.11.2015

Auch unter Ubuntu 15.10 kann man wieder mit dem Startmedienersteller (alias Startup Disk Creator) ein Live-System auf einem USB-Stick einrichten. ...

Fehler des Startmedienerstellers von Ubuntu 15.10 umgehen

Aktuelle Fragen

Leap 42.1 und LibreOffice
Heinz Kolbe, 09.02.2016 21:54, 0 Antworten
Moin moin, auf meinem Notebook habe ich Leap 42.1 und Win 10 installiert. Alles läuft rund nur...
Tails Update
Val Lerie, 11.01.2016 10:51, 0 Antworten
Hallo zusammen, updaten > update Speichern unter > Persistent nicht möglich, mit der Meldung;...
Recoll
Jürgen Heck, 20.12.2015 18:13, 4 Antworten
Wie kann man mit Recoll nach bestimmten Zeichen/Satzzeichen bzw. Zeichenkombinationen suchen, z....
Wings Platinum 4 auf Linux?
Bodo Steguweit, 18.12.2015 11:37, 4 Antworten
Hallo in die Runde ich nutze für meine Diashows Wings Platinum 4 als Diareferent. Arbeite jetzt...
Bandbreite regulieren
Georg Armani, 25.11.2015 16:50, 1 Antworten
Hallo, ich bin ein Neuling in Sachen Linux und hoffe auf Hilfe. Ich habe zwei Windows Rechner...