Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

„Klickbunt auf dem Server? Warum nicht, wenn's hilft!"
(220 Punkte bei 8 Stimmen)
KDE 4.10.2, Gnome 3.6 und mehr
(143 Punkte bei 5 Stimmen)
Google schmeißt Jabber raus ...
(121 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.

Suche mit less
Suche mit less

Mit Bordmitteln riesige Textdatei durchsuchen

→ Zum Tipp-Archiv...

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/

Bookmark and Share

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: 139 Punkte bei 6 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: 78 Punkte bei 5 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: 35 Punkte bei 6 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: 149 Punkte bei 7 Stimmen.
Den Beitrag bewerten: Gut / Schlecht

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: 139 Punkte bei 6 Stimmen.
Den Beitrag bewerten: Gut / Schlecht
-
Re: useless use of cat
Tim Schürmann, Mittwoch, 23. Januar 2013 00:01:24
Ein/Ausklappen
-
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

Tipp der Woche

Emacs als Psychologe
Emacs als Psychologe
Tim Schürmann, 21.05.2013 11:49, 0 Kommentare

Wer beim Schreiben in Emacs nicht mehr weiter weiß oder schier an einer Programmieraufgabe verzweifelt, der kann den eingebauten Psychologen um Rat fragen.

1966 entwickelte der Infor...

123 Hits
Wertung: 139 Punkte (6 Stimmen)

Aktuelle Fragen

Kontakt via QR code hinzufügen
Herman Sproesser, 17.05.2013 17:46, 3 Antworten
Hi hab in der aktuellen ausgabe 06.2013 den artikel über QR Codes gelesen. Ich hab nartürlich...
Dateimanager Dolphin, wo legt er die Datei Kommentare ab?
Uwe Heine, 16.05.2013 15:19, 1 Antworten
Suse Linux 12.1 - KDE 4.7.2 / Dolphin 1.7. Ich habe bei vielen Dateien über Dolphin Kommentare...
wie baut man Kernel Module so, dass sie mit jedem Kernel laden?
GoaSkin , 22.04.2013 10:22, 1 Antworten
Hallo, baut man anhand eines Kernel-Sources Module, nutzt Linux im Normalfall eine strikte V...
Problem beim Installieren von SuSe 12.3
Georg Prokert, 14.04.2013 00:04, 16 Antworten
Hallo, auf meinem neuem Laptop (Acer Aspire V3-771, Intel Core i5-3230 M, Intel HD Graphics 4...
lvm wieder loswerden
Peter Dibbern, 11.04.2013 16:28, 4 Antworten
Ich habe sämtliche alten Kisten ausgeschlachtet und aus der Teilen einen Rechner zusammengeschrau...

Jetzt auf den Mailinglisten

[EasyLinux-Suse] Leerung des Papierkorbes von Hand
Christoph-J. Walter, 24.05.2013 10:09
Hallo Liste, ich wollte meinen Papierkorb leeren. Nun erscheint die Meldung " Papierkorb von Hand lee...
Re: [EasyLinux-Ubuntu] [erledigt] Re: logcheck: seltsames Verhalten
Alfred Zahlten, 24.05.2013 00:05
Am 23.05.2013 18:23, schrieb Hartmut Haase: Hallo Hartmut, bei mir wird einiger Staub durch ein Küchenkrepp...
[EasyLinux-Ubuntu] systemweite Mausgesten
Uwe Herrmuth, 23.05.2013 21:43
Servus Miteinander, ich such ein Programm, welches systemweit Mausgesten auswerten kann. easystroke ist das...
Re: [EasyLinux-Ubuntu] ubuntu + xfce wollen nichts mehr sagen
Uwe Herrmuth, 23.05.2013 21:38
Hallo Hartmut, Hartmut Haase schrieb am 23.05.2013 um 18:20: >Ubuntu 12.04 + xfce 4.8 >Hallo Liste,...
Re: [EasyLinux-Suse] Unterschiedliche Zeit zwischen OpenSuSe 12.2 und Windows XP
"d.blanke@gmx.net", 23.05.2013 21:15
Edgar Dombrowski schrieb: > Hallo, Leute. > > Icjh habe vor wenigen Tagen auf meinem XP-Rechner...