AA_structure_ayla87_sxc_1384595.jpg

© Ayla87, sxc.hu

Mit Struktur

Suche in Datenformaten (Teil 1)

22.05.2012
,
Grep gehört zu den elementaren Linux-Werkzeugen. Eine Reihe von Zusatztools hilft bei der Suche in Formaten, die dem kleinen Tool sonst versperrt bleiben.

Die Diskussion begann im Rahmen der OpenRheinRuhr 2011: Welche Tools eignen sich am besten für die Suche in den verschiedenen Dateiformaten? Das Hauptaugenmerk galt Programmen, die ähnlich wie Grep auf der Kommandozeile funktionieren. Es kam rasch eine größere Menge an Werkzeugen zusammen, wobei sich schnell herausstellte, dass viele davon kaum ein Nutzer kennt.

In der Folge entstand eine erste Übersicht solcher Tools, die Axel Beckert kurz darauf in seinem Blog [1] veröffentlichte. Die Liste beinhaltet neben dem Anwendungsbereich und Datenformat zusätzlich den Paketnamen für auf Debian oder Ubuntu basierende Linux-Distributionen.

Dieser Blog-Eintrag löste ein reges Experimentieren aus. Leser schickten weitere Hinweise, die eine erneute Recherche nach sich zogen, und in der Folge gelang es, die Liste weiter zu vervollständigen. Daraus entstanden bereits ein Artikel zur Suche in Postscript- und PDF-Dokumenten [2] sowie in Archiven und komprimierten Daten [3]. Nun steht eine Auswahl von Tools für Anwendungsformate im Mittelpunkt.

Exakte Position

Bei der Suche über viele Dateien ist es wichtig, den Dateinamen und die exakte Zeilennummer zu erfahren, in der ein Treffer auftritt. Grep leistet das über die Kombination der beiden Optionen -o und -n. Dabei sorgt -o als Kurzform für --only-matching dafür, dass Grep nur den exakten Treffer ohne den umgebenden Kontext ausgibt, -n (--line-number) stellt der Ausgabe die Zeilennummer voran.

Suchen Sie mit Grep über mehrere Dateien, so stellt das Programm der Ausgabe den Dateinamen voran. Dabei trennt es Dateiname, Zeilennummer und Treffer jeweils durch einen Doppelpunkt voneinander (Listing 1) und hebt, falls --color mit im Spiel ist, diese farblich unterschiedlich hervor.

Listing 1

$ cat -n datei1
1 Muster
2 muster
$ cat -n datei2
1 muster
2 MusTer
$ grep -on -E "Mus[tT]er" datei*
datei1:1:Muster
datei2:2:MusTer

Gnumeric

Zur Office-Suite des Gnome-Projekts zählt die Tabellenkalkulation Gnumeric. Das Paket enthält neben dem eigentlichen Programm die beiden nützlichen Werkzeuge Ssconvert und Ssgrep. Die ersten beiden Buchstaben stehen für "Spreadsheet", also Tabellenblatt. Während Ssconvert Gnumeric-Rechenblätter in andere Formate umwandelt, sucht Ssgrep in diesen nach dem übergebenen Suchmuster.

Dabei unterstützt das Programm jedes Datenformat, für das Gnumeric einen Import-Filter besitzt. Neben dem nativen Gnumeric-Format (Gzip-komprimiertes XML) fallen unter anderem CSV-Daten, Microsoft Excel, Quattro Pro sowie das XML-Format von OpenOffice und LibreOffice Calc [4] in diese Kategorie.

Der Aufruf von Ssgrep ähnelt dem von Grep in vielerlei Hinsicht: Das Programm erwartet zwei Parameter – als erstes die Optionen mit dem Suchmuster, als zweites den Namen der Gnumeric-Datei, in der Sie suchen möchten. Es interpretiert das angegebene Muster als regulären Ausdruck [5] und ermöglicht somit volle Flexibilität beim Formulieren.

Als Treffer gibt es den gesamten Inhalt der Zelle aus. Mit der Option -H (Kurzform für --with-filename) gibt es zusätzlich den Dateinamen aus. Die Option -c zählt die Treffer ("count"). Mit -n (--print-locus) erhalten Sie zusätzlich den Namen des Rechenblattes sowie die Zellennummer. Listing 2 zeigt den Aufruf von Ssgrep zur Datei aus Abbildung 1.

Abbildung 1: Ein Rechenblatt mit einer umfangreichen Produktliste in Gnumeric.

Listing 2

$ ssgrep -cH "Nano[Ss]tation" datei
datei:4
$ ssgrep -Hn "Nano[Ss]tation" datei
datei:Blatt1!C4:8xUbiquiti NanoStation M5
datei:Blatt1!C5:2xUbiquiti NanoStation 5
datei:Blatt1!C6:2xUbiquiti Nanostation M5
datei:Blatt1!C8:1xUbiquiti NanoStation M5

Die beiden Optionen -l und -L erweisen sich als nützlich, wenn Sie mehrere Dateien durchsuchen und nur den Namen der Datei benötigen, in der das Programm eine Übereinstimmung mit dem Muster findet. Mit der Option -l erhalten Sie eine Positivliste, mit -L hingegen eine Negativliste, also alle Dateien ohne Treffer. Diese beiden Optionen helfen dabei, den Suchraum einzugrenzen.

TIPP

Ssgrep kennt keine Option --color. Möchten Sie trotzdem etwas Farbe ins Ergebnis bringen, filtern Sie die Ausgabe durch ein nachfolgendes grep --color.

Für die Tabellenkalkulation Calc von OpenOffice und LibreOffice existiert kein Kommandozeilenwerkzeug, das ähnlich wie Ssgrep funktioniert. Allerdings hat Klaus Becker auf der Mailingliste der deutschen Debian-Anwender ein Skript gepostet [6], das Unzip und Grep kombiniert, um dennoch eine Suche im Terminal zu ermöglichen.

Die graphische Alternative Loook [7], ein Python-Skript mit Tk-Oberfläche, beherrscht die Suche in allen Dokumenten von Open- und LibreOffice (Abbildung 2). Es steht bisher allerdings nicht als Paket für Debian oder Ubuntu bereit, sondern nur als ZIP-Datei zum freien Download.

Abbildung 2: Loook hilft bei der Suche in Open- und LibreOffice-Dateien.

Im mittleren Eingabefeld (Search Path) des Fensters legen Sie fest, in welchem Verzeichnis die Software nach passenden Dateien sucht. Das dritte Eingabefeld (Search terms) nimmt das Suchkriterium auf. Allerdings verarbeitet Loook keine regulären Ausdrücke, sondern nur exakte Zeichenketten.

Sie haben die Möglichkeit, einen oder mehrere Suchbegriffe einzugeben und diese logisch miteinander zu verknüpfen. Dazu wählen Sie im Schalter Mode den entsprechenden Eintrag aus. Alle Treffer erscheinen in der unteren Box, ein Klick auf den Dateinamen öffnet die Datei. Welches Programm Sie dazu verwenden, bestimmen Sie über das oberste Eingabefeld (Viewer).

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

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...