Home / LinuxUser / 2002 / 10 / Coole Tools schnelle Tipper

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(161 Punkte bei 4 Stimmen)
Mandriva in Nöten
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Text-Utilities in Unix-Manier

Coole Tools schnelle Tipper

Suchen mit Regulären Ausdrücken

Unentbehrlich im Umgang mit Texten und Dateien sind Reguläre Ausdrücke. Viele Kommandos und Befehle wären nicht einmal halb so nützlich, würden Unix-Systeme (und folglich auch Linux) keine Unterstützung für Reguläre Ausdrücke bieten. Im wesentlichen dienen sie dazu, Zeichenketten und Suchanfragen zu spezifizieren.

Leider ist der Umgang mit diesem Werkzeug nicht ganz trivial, so dass es dutzende Bücher zum Thema gibt, auf die man ruhig einmal den einen oder anderen Blick werfen sollte. In der Ausgabe 08/02 des LinuxUsers ist das Thema ebenfalls ausführlich behandelt worden. Aber auch im Web gibt es zahlreiche Hilfestellungen, so zum Beispiel auch unter [1] oder [2].

Wie ungemein praktisch Reguläre Ausdrücke sind, erkennt man an folgender Anwendung. Stellen Sie sich vor, Sie wollen aus Ihren alten Mailbox-Archiven die Adresse eines Hans Schmidt in Erfahrung bringen. Sie wissen, dass er Ihnen im Jahr 2001 eine Nachricht zukommen ließ, können sich aber nicht mehr an die entsprechende Mailbox erinnern. Kein Problem, denn mit grep können Sie in allen Boxen blitzschnell Herrn Schmidt ausfindig machen. Wechseln Sie in Ihr Archiv von 2001 und geben Sie den folgenden Befehl ein:

grep Hans.Schmidt @L: *

Der Stern veranlasst grep, in allen Dateien des aktuellen Verzeichnisses nach dem Ausdruck Hans.Schmidt zu suchen, wobei der Punkt zwischen dem Namen ein beliebiges Zeichen repräsentiert. Es könnte ja auch sein, dass nicht Hans Schmidt, sondern tatsächlich Hans.Schmidt oder Hans_Schmidt gefunden wird.

Genauso gut könnten Sie natürlich nach ^From:.@L: *Hans.Schmidt suchen, wenn Sie sicher sind, dass dies so im Kopf einer Nachricht steht. Zudem enthält der Ausdruck zwei weitere Features regulärer Ausdrücke: Das Caret-Zeichen oder Dach zu Anfang markiert den Zeilenbeginn und die Kombination aus Punkt und Stern markiert eine beliebige Zeichenkette zwischen From und Hans.Schmidt.

Sie sehen, die Möglichkeiten sind noch lange nicht erschöpft und es lohnt sich wirklich, die entsprechenden Anleitungen und Beispiele zu studieren.

Tabelle 2: Wichtige grep-Schalter

-E Verwendung erweiterter Regulärer Ausdrücke, an Stelle der "einfachen" Variante (für Profis)
-i Groß- und Kleinschreibung ignorieren
-l Anzeige von Dateinamen, an Stelle von Textpassagen

Richtig mächtig wird grep allerdings erst in Verbindung mit dem Kommando find. Dazu spinnen wir unser Beispiel weiter und vermuten, dass das Mail-Archiv aus dem Jahr 2001 in verschiedene Unterverzeichnisse aufgeteilt ist, so dass der ursprüngliche Befehl versagt hätte. Mit find lässt sich der Inhalt von Unterverzeichnissen durchsuchen.

find . -exec grep "Hans.Schmidt" '{}' \; -print

Der einleitende Punkt veranlasst find, im aktuellen Verzeichnis mit der Suche zu beginnen und dann auf jede Datei die exec-Direktive anzuwenden, also grep. Mit dem Klammersymbol "{}" wird jede gefundene Datei als Argument für grep eingefügt und "\;" beendet schließlich die Anweisung.

Sind Sie dagegen sicher, dass sich Hans Schmidt bei Ihnen über eine KDE-Mailing-Liste gemeldet hat, so können Sie die Suche zusätzlich verfeinern:

find . -name "KDE@L: *" -exec grep "Hans.Schmidt" '{}' \; -print > ergebnisse.txt

Die abschließende Umleitung ist sinnvoll, wenn die Suche sehr viele Treffer aufweist. Diese Ergebnisliste ließe sich erneut durch Text-Utilities filtern.

Anzumerken ist außerdem, dass die vorgestellten Befehle ohne die tiefere Kenntnis von regulären Ausdrücken zu verwenden sind. Selbst die triviale Zeichenreihe Hans Schmidt legt bereits einen grep-Ausdruck fest. Und selbstverständlich funktioniert find ohne eine exec-Anweisung. Die Man-Pages der Befehle erklären das im Detail, teilweise sogar an Hand von Beispielen.

Tabelle 3: Nützliche Reguläre Ausdrücke

[A-Za-z]+ Eine Reihe von Groß- und Kleinbuchstaben, zum Beispiel "Mustertext"
Wart(en|end|ung) Trifft zu auf "Warten", "Wartend" und "Wartung"
(ftp|http|https|mailto|news)://[^ >)]+ Internet URLs, zum Beispiel "http://www.linux-user.de/"
[A-Za-z0-9._-]+@[[A-Za-z0-9.-]+ e-Mail Adressen, zum Beispiel "info@linux-user.de"

Der Abfalleimer

Wenn man über Text-Utilities spricht, sollte das Shell-Pendant zum Abfalleimer-Icon nicht unerwähnt bleiben: /dev/null. Anstatt Inhalte mit der Maus über einen Papierkorb zu ziehen, leiten Sie alternativ ganze Textströme in das Verzeichnis /dev/null um. Das ist zu Zeiten ungemein nützlich, wenn Sie zum Beispiel unnötige Programmausgaben umgehen wollen. Wie das funktioniert, sehen Sie hier:

ls > /dev/null

Die Ausgabe von ls wandert unwiderruflich ins Leere. Und auch dieser Mechanismus lässt sich prima mit den bereits vorgestellten Kommandos kombinieren.

Stellen Sie sich vor, Sie wollen wissen, welche Konfigurationsdateien im Verzeichnis /etc die Environment-Variable PATH setzen. Der folgende einfache Befehl gibt darüber Auskunft:

grep -l PATH /etc/@L: * 2>/dev/null

Durch grep -l teilen wir dem Befehl mit, nur die Dateinamen zurückzuliefern, jedoch nicht die gefundenen Textstellen. Das abschließende 2>/dev/null filtert die auftretenden Fehlerausgaben heraus, da grep nur auf Dateien anwendbar ist, nicht aber auf Verzeichnisse. Würden Sie die 2 durch eine 1 ersetzen, so bekämen Sie ausschließlich die Fehlermeldungen zu Gesicht. Dahinter verbirgt sich ein wichtiges Unix-Feature, nämlich die Unterscheidung zwischen normaler Ausgabe und Fehlermeldungen oder Warnungen.

Zum Schluss sei noch angemerkt, dass die Text-Utilities mit den hier vorgestellten Methoden noch sehr lange nicht am Ende sind. Schier endlos sind die Möglichkeiten und es dauert sicherlich eine ganze Weile, bis man sich seine Lieblings-Utilities sinnvoll herausgepickt und zusammengestellt hat. Noch größere Komplexität erhält die Thematik, wenn man die gewonnenen Fähigkeiten in selbstgeschriebenen Skripten unterbringt, doch das ist ein gänzlich eigenes Kapitel und zudem abhängig von der Shell, die auf Ihrem System installiert ist.

Der Autor

Andreas Bauer brütet gerade über seiner Diplomarbeit in Informatik und wird dazu den Rest des Sommers in Australien verbringen. Erreichbar ist er jedoch weiterhin unter mailto:baueran@in.tum.de.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

Hits
Wertung: 0 Punkte (0 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...