Home / LinuxUser / 2012 / 04 / Suche in komprimierten Dateien und Archiven

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Debian leicht gemacht
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.

Nadel im Datenhaufen

Suche in komprimierten Dateien und Archiven

Geschwindigkeit

An dieser Stelle erhebt sich die spannende Frage nach der Trefferquote und der Zeit, nach der das Suchergebnis feststeht. Obwohl für bestimmte Formate spezielle Werkzeuge existieren, arbeiten diese nicht automatisch besser – die Standard-Tools sind vielfach bis ins letzte Quäntchen optimiert.

Für einen Vergleich mit halbwegs plausiblen Werten stand im Test eine Datei mit 12 MByte ASCII-Text bereit. Diese wurde mit den jeweiligen Programmen komprimiert und dann darin gesucht – einmal über die Standardausgabe und einmal mit den formatspezifischen Suchprogrammen. Die Tabelle "Tools im Test" zeigt die ermittelten Werte, Abbildung 6 stellt diese grafisch gegenüber.

Tools im Test

Methode Kommandoaufruf Zeit (real) Zeit (user) Zeit (sys)
Unkomprimiert time grep --color -E "[Pp]reis.+pdf" testliste 0,040s 0,024s 0,016s
Bzegrep time bzegrep --color "[Pp]reis.+pdf" testliste.bz2 0,824s 0,832s 0,036s
Bzip2+Grep time bzip2 -dc testliste.bz2 | grep --color -E "[Pp]reis.+pdf" 0,826s 0,832s 0,036s
Zegrep time zegrep --color "[Pp]reis.+pdf" testliste.gz 0,189s 0,196s 0,024s
Gunzip+Grep time gunzip -dc testliste.gz | grep --color -E "[Pp]reis.+pdf" 0,173s 0,184s 0,016s
Xzgrep time xzgrep --color -E "[Pp]reis.+pdf" testliste.xz 0,113s 0,100s 0,044s
Xz+Grep time xz -dc testliste.xz | grep --color -E "[Pp]reis.+pdf" 0,097s 0,108s 0,020s
Abbildung 6

Abbildung 6: Die gemessenen Zeiten für die Kommandoaufrufe differieren teils deutlich.

Vorneweg: Die Liste der Treffer war im Test bei allen Programmen identisch und vollständig. Hingegen zeigen sich bei den gemessenen Zeiten für den Mustervergleich starke Unterschiede: Für jedes Komprimierungsformat existiert ein spezifisches Zeitverhalten. Am wenigsten Zeit benötigt XZ, Bzip2 arbeitet hingegen am längsten.

Abbildung 6 stellt die gemessenen Zeiten bei der Suche in den Textdaten dar. Die erste Säule zeigt die Suche mit Grep auf den unkomprimierten Daten (12 MByte). Die nachfolgenden, jeweils benachbarten Säulen zeigen die Dauer für einen spezifischen Suchweg – Säule 2 und 3 für Bzip2 (1,8 MByte Daten), Säule 4 und 5 für Gzip (2,4 MByte) und Säule sechs und sieben für Xz (98 KByte).

Hier fällt auf, dass sich jeder Suche eine spezifische Dauer zuordnen lässt. Dabei liegt die Suche über die Standardausgabe stets in der gleichen Klasse wie das formatspezifische Programm.

Unter Berücksichtigung der Kompressionsstärke gebührt dem XZ-Format die Ehre des Siegers. Im Vergleich zu den anderen Werkzeugen komprimiert dieses Tool sehr stark. Da es nur 98 KByte an Daten von der Festplatte zu lesen braucht, verringert sich der Gesamtaufwand für die Suche. Das Auspacken und Durchsuchen geschieht vollständig im RAM und verursacht daher die geringste Verzögerung.

Fazit

Archive und komprimierte Daten zu durchsuchen gelingt relativ problemlos, sofern Sie die verschiedenen Werkzeuge geschickt miteinander kombinieren. Das setzt aber die genaue Kenntnis der jeweiligen Optionen und Parameter voraus. Nutzen Sie die speziellen Tools aus den Paketen der einzelnen Archiv- und Komprimierungsprogramme, verringert sich der Aufwand etwas. Qualitativ ließ sich im Vergleich zu den klassischen Shell-Kommandos kein Unterschied feststellen.

Die Unterschiede in Bezug auf die Geschwindigkeit treten bei größerern Datenmengen vermutlich noch deutlicher hervor. Ob das im Alltagsgebrauch eine wesentliche Rolle spielt, hängt im Einzelfall von den archivierten Daten und deren Mengen ab. Mit Ausnahme von Zipgrep erfüllt jedes der vorgestellten Werkzeuge die Erwartungen.

Welche Kommandosequenz Sie letztendlich im Alltag einsetzen, hat oft einen ganz profanen Grund – gibt es das Paket für die genutzte Distribution überhaupt, ist es auch installiert? Weiterhin spielen die Lesbarkeit eines Kommandos und die Bequemlichkeit des Anwenders einen großen Einfluß bei der Nutzung. Verkürzte Schreibweisen sparen Zeit bei der Eingabe und verringern die Fehlerrate beim Einsatz.

Für andere Dateiformate existieren ebenfalls Grep-ähnliche Werkzeuge, unter anderem für PDF-Dokumente (pdfgrep[4], Audiodaten (taggrepper), Prozesslisten (pgrep) und Gnumeric-Rechenblätter (ssgrep). Eine erste Übersicht hat Axel Beckert in seinem Blog [5] zusammengetragen. 

Danksagung

Die Autoren bedanken sich bei Maximilian Techter, Thomas Osterried und Thomas Winde für deren kritische Anmerkungen und Kommentare im Vorfeld dieses Artikels.

Infos

[1] Werkzeuge auf der Kommandozeile: http://www-user.tu-chemnitz.de/~hot/unix_linux_werkzeugkasten/weitere_kdozeilen_beispiele.html

[2] Unpack-Paket bei Debian: http://packages.debian.org/squeeze/unp

[3] Debian-Bug-Report zu Zipgrep: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=652838

[4] Suche in Postscript und PDF: Frank Hofmann, "Gesucht, gefunden", LU 02/2012, S. 82, http://www.linux-community.de/25255

[5] "Grep everything": http://noone.org/blog/English/Computer/Shell/grep%20everything.futile

Der Autor

Axel Beckert (http://noone.org/abe/) hat Informatik an der Universität des Saarlandes in Saarbrücken studiert. Er arbeitet als Systemadministrator an der ETH Zürich am Departement für Physik. Nebenher ist er ehrenamtlich beim Debian-Projekt, in der Linux User Group Switzerland (LUGS), beim Hackerfunk (Radiosendung + Podcast) sowie weiteren Open-Source-Projekten aktiv.

Frank Hofmann hat Informatik an der Technischen Universität Chemnitz studiert. Derzeit arbeitet er in Berlin im Büro 2.0 (http://www.buero20.org), einem Open-Source Experten-Netzwerk, als Dienstleister mit Spezialisierung auf Druck und Satz (http://www.efho.de). Er ist Mitgründer des Schulungsunternehmens Wizards of FOSS (http://www.wizards-of-foss.de/). Seit 2008 koordiniert er das Regionaltreffen der Linux-User-Groups aus der Region Berlin-Brandenburg.

Tip a friend    Druckansicht Bookmark and Share
Kommentare

Hits
Wertung: 0 Punkte (0 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 05/2014

Aktuelle Ausgabe kaufen:

Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,95 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 60,60) können Sie im Medialinx-Shop bestellen.

Tipp der Woche

Bilder vergleichen mit diffimg
Bilder vergleichen mit diffimg
Tim Schürmann, 01.04.2014 12:40, 1 Kommentare

Das kleine Werkzeug diffimg kann zwei (scheinbar) identische Bilder miteinander vergleichen und die Unterschiede optisch hervorheben. Damit lassen sich nicht nur Rätsel a la „Orignial und Fäls...

Aktuelle Fragen

programm suche
Hans-Joachim Köpke, 13.04.2014 10:43, 8 Antworten
suche noch programme die zu windows gibt, die auch unter linux laufen bzw sich ähneln sozusagen a...
Funknetz (Web-Stick)
Hans-Joachim Köpke, 04.04.2014 07:31, 2 Antworten
Bei Windows7 brauche ich den Stick nur ins USB-Fach schieben dann erkennt Windows7 Automatisch, a...
Ubuntu 13.10 überschreibt immer Windows 8 Bootmanager
Thomas Weiss, 15.03.2014 19:20, 8 Antworten
Hallo Leute, ich hoffe das ich richtig bin. Ich habe einen Dell Insipron 660 Ich möchte gerne Ub...
USB-PTP-Class Kamera wird nicht erkannt (Windows-only)
Wimpy *, 14.03.2014 13:04, 15 Antworten
ich habe meiner Frau eine Digitalkamera, AGFA Optima 103, gekauft und wir sind sehr zufrieden dam...
Treiber
Michael Kristahn, 12.03.2014 08:28, 5 Antworten
Habe mir ein Scanner gebraucht gekauft von Canon CanoScan LiDE 70 kein Treiber wie bekomme ich de...