Aus LinuxUser 06/2012

Suche in Datenformaten (Teil 1)

© Ayla87, sxc.hu

Mit Struktur

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

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
KAUFEN
LinuxUser 06/2012 KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland

Hinterlasse einen Kommentar

  E-Mail Benachrichtigung  
Benachrichtige mich zu: