AA_PO-21688-Fotolia-bilderbox_fotolia-chaos.jpg

© bilderbox, fotolia

Suche in Text-, PDF- und LibreOffice-Dateien

Schöner finden

Im Ordner "Bank" liegen die Kontoauszüge der letzten drei Jahre, und Sie fragen sich, wann Sie im örtlichen Elektronikmarkt den neuen Monitor gekauft haben. Über manuelles Öffnen der Dateien im PDF-Betrachter und dessen Suchfunktion finden Sie das in wenigen Minuten heraus, trotzdem ist die Vorgehensweise umständlich. Mit "pdfgrep" erhalten Sie die Antwort sofort. Einmal dabei, bietet es sich auch an, LibreOffice-Dokumente zu durchsuchen.

Viele Freunde der Kommandozeile kennen das klassische Tool grep, mit dem sich Textdateien nach Suchbegriffen durchforsten lassen [1]; für komplexere Suchen unterstützt das Programm zudem die so genannten regulären Ausdrücke (die sehr grob mit dem Einsatz der Wildcard-Zeichen "*" und "?" bei der Auswahl von Dateinamen verwandt, aber deutlich leistungsfähiger sind – mehr dazu weiter unten). Allerdings liegen heute immer mehr Dateien nicht im einfachen Textformat vor, und grep scheitert fast immer beim Versuch, in PDF- oder LibreOffice-Dateien ein Wort zu finden, denn beide Dokumentformate speichern Textinhalte komprimiert. So erzeugt z. B. der Aufruf

grep -i Linux EasyLinux-CE-2016-02.pdf

der die Community Edition der letzten EasyLinux-Ausgabe nach dem Wort "Linux" durchsuchen soll, keine einzige Ausgabezeile, obwohl ein Blick mit dem PDF-Viewer schnell zeigt, dass das Wort häufig im Dokument vorkommt.

Eine umständliche Möglichkeit, in PDF- und LibreOffice-Dateien dennoch mit grep zu suchen, ist die Konvertierung in ein Textformat. Für die Officeformate geht das über den Export aus LibreOffice heraus, PDF-Dateien könnte man mit pdftotext umwandeln und die so erstellte txt-Datei dann mit grep analysieren:

[esser@quad:~]$ pdftotext EasyLinux-CE-2016-02.pdf
[esser@quad:~]$ grep Linux EasyLinux-CE-2016-02.txt
Live-Linux-Distribution
Beide Linux-Versionen mit
 uftakt: Mit Linux zum Smart-TV
...

Das ist aber nicht praktikabel, denn der Sinn der Suche mit grep ist ja oft, aus einer Vielzahl von Dateien diejenigen zu identifizieren, die einen Suchbegriff enthalten – dafür müssten aber alle in Frage kommenden Dokumente zusätzlich in einer reinen Textfassung vorliegen. Wir stellen Lösungen vor, mit denen Sie ohne solchen Aufwand direkt in PDF- und LibreOffice-Dateien suchen können.

PDF mit "pdfgrep"

Für das PDF-Format steht mit pdfgrep [2] ein Tool zur Verfügung, das Sie wie grep benutzen können; es erwartet aber, dass die zu durchsuchenden Dateien im PDF- statt im Textformat vorliegen. Für die obige Beispieldatei von EasyLinux findet es entsprechend zahlreiche Treffer zum Suchbegriff "Linux":

[esser@quad:~]$ pdfgrep Linux EasyLinux-CE-2016-02.pdf
  Long Term Support (LTS)          Live-Linux-Distribution
  -   KDE 4.14                      Beide Linux-Versionen mit
  -   Linux-Kernel 3.19 + 4.2.0     Installationsanleitung ab S. 102
...

In der Ausgabe hebt das Programm die Treffer farbig hervor (was wir hier durch kursive Schrift anzeigen). Listing 1 zeigt die Suche nach dem Wort "Spiegel" in einer größeren Sammlung von Kontoauszügen – neben dem Buchungstext steht zufällig auch direkt das Datum der Abbuchung, pdfgrep zeigt immer ein bisschen Text um die Fundstelle herum an. Wie viel umgebender Text zu sehen ist, hängt von der Breite des Terminalfensters ab: Das Programm schreibt jeweils bis an den Rand der Zeile.

Vor der Nutzung steht die Einrichtung der Software, die nicht zur Standardauswahl der gängigen Distributionen gehört. OpenSuse-Anwender installieren das Programm über die One-Click-Funktion von der zugehörigen Paketseite [3] aus dem Repository Publishing; bei Ubuntu ist das Paket pdfgrep im universe-Repository enthalten, das Sie eventuell erst in der Datei /etc/apt/sources.list aktivieren müssen.

Listing 1

Suche nach "Spiegel"

[esser@quad:Kontoauszuege]$ pdfgrep -i Spiegel *2015*pdf
Kontoauszug_20150131.pdf: SPIEGEL Verlag                          14.01
Kontoauszug_20150131.pdf:   3000865, DER SPIEGEL - Hans-Georg
Kontoauszug_20150501.pdf: SPIEGEL Verlag                          14.04
Kontoauszug_20150501.pdf:   3000865, DER SPIEGEL - Hans-Georg
Kontoauszug_20150530.pdf: SPIEGEL Verlag                          06.05
Kontoauszug_20150530.pdf:   3101021, DER SPIEGEL digital - Ha
Kontoauszug_20150801.pdf: SPIEGEL Verlag                          14.07
Kontoauszug_20150801.pdf:   3912865, DER SPIEGEL - Hans-Georg
Kontoauszug_20151031.pdf: SPIEGEL Verlag                          13.10
Kontoauszug_20151031.pdf:   3912865, DER SPIEGEL - Hans-Georg
Kontoauszug_20151201.pdf: SPIEGEL Verlag                          04.11
Kontoauszug_20151201.pdf:   3101021, DER SPIEGEL digital - Ha
[esser@quad:Kontoauszuege]$ _

Seitenzahlen und Trefferzahl

Beim Durchsuchen von Textdateien mit grep erscheinen neben den Treffern auf Wunsch auch die Zeilennummern – das ist bei PDF-Dateien nicht möglich, aber wenn Sie z. B. in einem mehrere hundert Seiten starken Buch suchen, wäre etwas mehr Hilfe beim Aufspüren des Treffers praktisch. Dafür bietet pdfgrep die Option -n, über die das Programm Seitenzahlen ausgibt (Abbildung 1). Bei der parallelen Suche in mehreren Dateien (ebenfalls Abbildung 1) erscheinen vor den Treffern auch jeweils die Dateinamen. pdfgrep verwendet unterschiedliche Farben, um Dateiname, Seitenangabe und Treffer vom umgebenden Text abzusetzen.

Abbildung 1: Über die Option "-n" zeigt "pdfgrep" auch Seitenzahlen zu den Treffern an. Hier hat es das Wort "Gnome" auf mehreren Seiten in zwei Community Editions von EasyLinux gefunden.

Sind Sie dagegen an der Trefferzahl interessiert, setzen Sie die Option -c (count, zählen) ein – dann gibt das Programm keine Textstellen aus, sondern verrät nur für jede Datei, wie oft der Suchbegriff vorkommt. (Hier erscheinen auch Dateien, in denen die Suche erfolglos war; die Trefferzahl ist dann 0.)

[esser@quad:tmp]$ pdfgrep -ci gnome EasyLinux-CE-2016-0*pdf
EasyLinux-CE-2016-01.pdf:22
EasyLinux-CE-2016-02.pdf:5
[esser@quad:tmp]$ pdfgrep -ci heuristisch EasyLinux-CE-2016-0*pdf
EasyLinux-CE-2016-01.pdf:2
EasyLinux-CE-2016-02.pdf:0

Um nacheinander aufzulisten, wie oft verschiedene Suchbegriffe in einem Dokument vorkommen, schreiben Sie sich eine kleine for-Schleife – der folgende Befehl sucht in einem älteren Linux-Buch nach den Begriffen KDE, Gnome und Linux und gibt die Ergebnisse übersichtlich aus:

[esser@quad:~]$ for suche in gnome kde linux; do echo -n "$suche: "; pdfgrep -ci $suche lgb2007.pdf; done
gnome: 133
kde: 493
linux: 1930

Dabei durchläuft die Schleifenvariable suche die drei Begriffe und ruft pdfgrep jeweils passend auf. Vorab gibt der echo-Befehl noch den aktuellen Suchbegriff aus; seine Option -n unterdrückt den normal üblichen Zeilenumbruch, so dass Suchbegriff und Zahl in einer Zeile bleiben.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Angetestet
    Markdown-Editor CuteMarkEd 0.11.2, Konsolen-Bildbetrachter Fim 0.5, Suchwerkzeug Pdfgrep 1.4.1, CSV-Datei-Viewer Tabview 1.4.2.
  • Neues auf den Heft-DVDs
    Nur mit dem optimalen System und der richtigen Software nutzen Sie das volle Potenzial Ihres Rechners. Mit der Heft-DVD erhalten Sie nicht nur topaktuelle Distributionen, sondern auch die passenden Programme zu den Artikeln.
  • Suche in Datenformaten (Teil 1)
    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.
  • Office verschlüsselt
    Texte und Tabellen, die nur Sie lesen können? Dank der in LibreOffice eingebauten Verschlüsselung ist das kein Problem. Setzen Sie dazu ein einziges Häkchen im Speichern-Dialog.
  • In PDF- und PS-Dateien suchen
    Postscript und PDF erzeugen kann jeder – darin suchen ist schon etwas schwieriger. Wir zeigen, welche Werkzeuge zum Erfolg verhelfen.
Kommentare

Infos zur Publikation

EL 11/2017-01/2018: Einstieg in Linux

Digitale Ausgabe: Preis € 9,80
(inkl. 19% MwSt.)

EasyLinux erscheint vierteljährlich und kostet 9,80 Euro. Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 33,30 Euro. Details dazu finden Sie im Computec-Shop.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!      

Stellenmarkt

Aktuelle Fragen

Huawei
Pit Hampelmann, 13.12.2017 11:35, 2 Antworten
Welches Smartphone ist für euch momentan das beste? Sehe ja die Huawei gerade ganz weit vorne. Bi...
Fernstudium Informatik
Joe Cole, 12.12.2017 10:36, 2 Antworten
Hallo! habe früher als ich 13 Jahre angefangen mit HTML und später Java zu programmieren. Weit...
Installation Linux mint auf stick
Reiner Schulz, 10.12.2017 17:34, 3 Antworten
Hallo, ich hab ein ISO-image mit Linux Mint auf einem Stick untergebracht Jetzt kann ich auch...
Canon Maxify 2750 oder ähnlicher Drucker
Hannes Richert, 05.12.2017 20:14, 4 Antworten
Hallo, leider hat Canon mich weiterverwiesen, weil sie Linux nicht supporten.. deshalb hier die...
Ubuntu Server
Steffen Seidler, 05.12.2017 12:10, 1 Antworten
Hallo! Hat jemand eine gute Anleitung für mich, wie ich Ubuntu Server einrichte? Habe bisher...