Mit Bordmitteln riesige Textdatei durchsuchen

Suche mit less
Suche mit less
22.01.2013 11:01

Wer eine bestimmte Stelle in einer mehrere Gigabyte großen Textdatei auffinden möchte, kommt mit den herkömmlichen Texteditoren nicht besonders weit: Entweder laden diese eine solch große Datei gar nicht erst ein oder aber sie stürzen beim Ladevorgang ab. Die ganze Textflut mit dem Kommandozeilenprogramm more zu durchblättern, dürfte wohl nur etwas für Masochisten sein.

Der Autor selbst musste vor Kurzem ein im Laufe der Jahre gewachsenes E-Mail-Archiv durchsuchen. Gefragt war lediglich das Datum einer ganz bestimmten E-Mail. Um dieses aufzuspüren, kam zunächst grep in den Sinn:

grep "Biene Mayer" inbox

Das spuckt allerdings nur die Zeile mit dem Namen des Absenders aus.

Griffig

Um auch an die Betreff-Zeile und das Datum der entsprechenden E-Mail zu gelangen, mussten auch die Zeilen um die Fundstelle herum ausgegeben werden. Genau dafür kennt grep den Parameter -C:

grep -C 2 "Biene Mayer" inbox

Dieser Befehl liefert auch die zwei Zeilen vor, sowie die zwei Zeilen nach dem Absender – mit anderen Worten also auch die vier Zeilen um die Fundstelle herum.

Bei vielen großen Textdateien dürfte man damit schon ans Ziel gelangen. Hier gab es jedoch im E-Mail-Archiv gleich mehrere E-Mails von Biene Mayer. grep spuckt somit alle Fundstellen aus. Diese sind zwar jeweils durch mehrere Bindestriche getrennt ----, bei der entstehenden Textflut war das aber nicht besonders hilfreich. Nur die erste Fundstelle liefert grep, wenn man noch den Parameter -m 1 anhängt:

grep -m 1 -C 2 "Biene Mayer" inbox

Dummerweise war das jedoch nicht die gesuchte E-Mail. Man könnte jetzt viel Hirnschmalz in das Suchmuster stecken oder zu speziellen grep-Alternativen greifen (beim Durchsuchen von großen E-Mail-Archiven hilft beispielsweise das darauf spezialisierte grepmail [1]).

less durchsucht auch große Dateien.

Weniger ist mehr

Das alles ist jedoch gar nicht nötig, denn auf der Festplatte schlummert bei den meisten Distributionen less. Dieser more-Ersatz durchsucht auch beliebig große Textdateien. Dazu setzt man less schlicht auf die Textdatei an:

less inbox

tippt einen Schrägstrich / (via [Umschalt+7]), gibt an der erscheinenden Kommandozeile das gesuchte Wort ein (im Beispiel Biene Mayer) und drückt die Eingabetaste. Damit landet man automatisch beim ersten Treffer. [N] springt jetzt zum nächsten Treffer, [Umschalt+N] zum vorherigen zurück. Wie gewohnt kann man mit den Pfeiltasten nach oben und unten oder seitenweise mit [Bild auf] und [Bild ab] blättern.

Es gibt natürlich noch weitere Möglichkeiten, eine riesige Textdatei nach einem Begriff zu durchpflügen, grep und less dürften für die meisten schnellen Suchen allerdings schon ausreichen.

Infos

[1] Axel Beckert, Frank Hofmann, „Durchkämmt“ – Suche in Datenformaten (Teil 2), LinuxUser, Ausgabe 7/2012:
http://www.linux-community.de/Internal/Artikel/Print-Artikel/LinuxUser/2012/07/Suche-in-Datenformaten-Teil-2/


Kommentare
useless use of cat
Chris (unangemeldet), Dienstag, 22. Januar 2013 13:43:25
Ein/Ausklappen

cat inbox |

Ist völlig unnötig.
grep "Biene Mayer" inbox



Bewertung: 166 Punkte bei 319 Stimmen.
Den Beitrag bewerten: Gut / Schlecht
-
Re: useless use of cat
Tim Schürmann, Mittwoch, 23. Januar 2013 00:01:24
Ein/Ausklappen

Stimmt, Danke für den Hinweis. Ich lasse es im Text aber jetzt erstmal so stehen.

(Ich habe in der letzten Zeit eindeutig zu viel mit der Pipe arbeiten müssen... :))


Bewertung: 342 Punkte bei 226 Stimmen.
Den Beitrag bewerten: Gut / Schlecht
-
Re: useless use of cat
Jörg Meier (unangemeldet), Donnerstag, 24. Januar 2013 06:08:50
Ein/Ausklappen

> Ich lasse es im Text aber jetzt erstmal so stehen.

Warum? Weil es so schön diletantisch aussieht?



Bewertung: 358 Punkte bei 239 Stimmen.
Den Beitrag bewerten: Gut / Schlecht
-
Re: useless use of cat
Tim Schürmann, Donnerstag, 24. Januar 2013 10:35:01
Ein/Ausklappen

> Warum?

Weil es den Kommentar erklärt. Ich werde es dann aber jetzt ändern.

> Weil es so schön diletantisch aussieht?

Warum diletantisch? Es ist eine weitere (erlaubte) Möglichkeit, "grep" die zu untersuchenden Informationen zuzuführen. Die Textdatei muss "grep" sowieso einmal komplett durchgehen. Von der Geschwindigkeit dürfte das zudem auf modernen Rechnern keinen großen Unterschied machen.


Bewertung: 272 Punkte bei 347 Stimmen.
Den Beitrag bewerten: Gut / Schlecht

Kommentare
useless use of cat
Chris (unangemeldet), Dienstag, 22. Januar 2013 13:43:25
Ein/Ausklappen
-
Re: useless use of cat
Tim Schürmann, Mittwoch, 23. Januar 2013 00:01:24
Ein/Ausklappen

Stimmt, Danke für den Hinweis. Ich lasse es im Text aber jetzt erstmal so stehen.

(Ich habe in der letzten Zeit eindeutig zu viel mit der Pipe arbeiten müssen... :))


Bewertung: 342 Punkte bei 226 Stimmen.
Den Beitrag bewerten: Gut / Schlecht
-
Re: useless use of cat
Jörg Meier (unangemeldet), Donnerstag, 24. Januar 2013 06:08:50
Ein/Ausklappen
-
Re: useless use of cat
Tim Schürmann, Donnerstag, 24. Januar 2013 10:35:01
Ein/Ausklappen

Aktuelle Fragen

Samba-Server für Win-Daten & Linux-Dateirechte
Gerd Grundmann, 12.01.2017 18:25, 0 Antworten
Hallo Gemeinde, ich habe ewig gegooo.. aber nicht wirklich gefunden, was ich suche. Auf mei...
LM Cinnamon 18.1Serena 64 bit
Herwig Ameisbichler, 11.01.2017 13:02, 6 Antworten
Hallo an alle. Bin Linux Neuling.Habe auf meiner SSD neben W10 (finde ich nicht mehr)LM17.2 auch...
Bilder in E-Mail einbinden?
Werner Hahn, 23.12.2016 12:18, 4 Antworten
Dell Latitude E6510, Ubuntu 16.04, Mozilla Firefox Ich bitte um eine leicht verständliche Anle...
Linux Mint 17.2
Herwig Ameisbichler, 17.12.2016 11:19, 4 Antworten
Wer kann mir helfen? Hab seit gestern Linux am Pc.Wie kann ich diese Miniaturschrift im Menü,Lei...
Linux 17.2 Treiber f. PC Drucker installieren
Ernst Malitzki, 11.12.2016 13:04, 7 Antworten
Habe einen PC Drucker von HP. Möchte diesen PC Drucker an meinen PC anschließen. Hierzu benötige...

Jetzt auf den Mailinglisten

Re: [EasyLinux-Ubuntu] Streams_übertragen
Frank von Thun, 22.01.2017 04:03
Am 22.01.2017 um 03:04 schrieb alfred: > > In Audacity sind alle schön in Reihe aber mit dem Splitten...
Re: [EasyLinux-Ubuntu] adobe_flash_player_für_android
Wolfgang Voelker, 19.01.2017 18:34
Hallo Hartmut, daß du im Playstore dazu was findest, liegt daran, daß es Flash ja mal bis Android Gingerbread...
Re: [EasyLinux-Ubuntu] adobe_flash_player_für_android
Hartmut Haase, 19.01.2017 16:23
Hallo Wolfgang, > klares nein. Hat Google schon lange verboten. verstanden. Spaßig ist nur: wenn man im...
Re: [EasyLinux-Ubuntu] Streams_übertragen
Frank von Thun, 19.01.2017 05:54
Am 18.01.2017 um 19:53 schrieb alfred: > Am 18.01.2017 um 18:02 schrieb Frank von Thun: >> Am 18.0...
Re: [EasyLinux-Ubuntu] Streams_übertragen
Heiko, 18.01.2017 22:48
Am Mittwoch, 18. Januar 2017, 19:53:08 CET schrieb alfred: Hallo Alfred. > > OK, geht und holt die...