Frage:
Ich muss eine 82,7 GB (!) Textdatei untersuchen. Was kann es öffnen?
hbquikcomjamesl
2020-02-16 23:27:01 UTC
view on stackexchange narkive permalink

Wir hatten kürzlich einen Zusammenbruch eines Tomcat-Servers, der eine 82,7-GB-Protokolldatei "Catalina.out" erzeugte, die ich für die forensische Analyse gespeichert habe.

Welche macOS-Editoren können Monstertextdateien öffnen, ohne 80 GB RAM zu verbrauchen oder 15 Minuten einzufrieren?

Müssen Sie die Datei lesen, um sie nach interessanten Details oder Fehlern zu durchsuchen, oder müssen Sie die Datei durchsuchen?Hat die Datei einen konsistenten Zeitstempel?Die folgenden Antworten sind alle geeignet, aber ab 80 GB sollten Sie einige Protokollanalyse- und Suchtechniken in Betracht ziehen, um die Daten zu finden, die Sie für Ihre Analyse benötigen.Eine beispielhafte, aber nicht themenbezogene Frage ist https://serverfault.com/questions/63297/good-free-tomcat-log-analyser
Siehe auch: https://askubuntu.com/questions/28847/text-editor-to-edit-large-4-3-gb-plain-text-file und https://vi.stackexchange.com/questions/149/how-can-i-open-very-large-files-with-good-performance
Wäre es sinnvoll, einen Parser für die Datei zu schreiben, der Datensätze extrahiert und als Zeilen in eine Datenbank einfügt?Datenbanken dienen zum effizienten Sortieren und Durchsuchen von Millionen von Datensätzen.Texteditoren sind es nicht.
Dreizehn antworten:
79E09796
2020-02-17 18:01:34 UTC
view on stackexchange narkive permalink

weniger Dateiname

Über die Befehlszeile können Sie Dateien sofort anzeigen, ohne die gesamte Datei in den Speicher zu laden.

GNU less verwendet standardmäßig nur 64 KB Pufferplatz, wenn eine beliebig große Datei angezeigt wird.Ich gehe davon aus, dass weniger in Macos dasselbe tut, also ist dies eine großartige Antwort.Weniger hat auch Regex-Suche, lässt Sie durch die Datei paginieren und vieles mehr.
Genau dafür wurde zuerst "mehr" und dann "weniger" gemacht.Viele Navigationstasten.Das Unix-Toolset ist sehr nützlich und es lohnt sich, es zu lernen.
@WayneConrad `less` ist kein Standardprogramm mit mehreren Implementierungen.`less` * ist * der auf` more` basierende GNU-Pager und wird mit macOS ausgeliefert.
+1 hier der Einfachheit halber ist es kein Editor, der gefragt wurde, aber es ist super pragmatisch und ein wenig in meiner Antwort vergraben.
Ich bezweifle, dass der durchschnittliche MacOS-Benutzer zu sorgfältig darüber nachdenkt, was _editing_ bedeutet, wenn er Wörter wie _editor_ verwendet.OP kann sehr wohl nur _viewer_ oder _pager_ gemeint haben.+1
"Das Letzte, woran ich mich erinnere, war, dass ich" | more` wiederhergestellt "habe ..." Habe meine +1!
"weniger" ist "mehr"
Tim Seed
2020-02-17 16:08:01 UTC
view on stackexchange narkive permalink

Ich würde nicht versuchen, es zu öffnen ... Ich würde lieber tun:

  1. grep - suche nach Text
  2. split - Zerhacken Sie die Datei in 10-MB-Blöcke.
  3. ol>

    So etwas wie:

      grep "Absturz" My80GbFile.txt |Mehr
     

    Wenn die große Datei nicht "zeilenbegrenzt" ist

      split -b 10M My80GbFile.txt
     

    Wenn es sich bei der großen Datei jedoch nur um eine Ladung Zeilen handelt, wird diese (wie veröffentlicht) in diesem Fall zeilenweise aufgeteilt (100.000 pro Unterdatei).

      split -l 100000 My80GbFile.txt
     
Vielleicht möchten Sie "grep -C5 Crash" verwenden, um über und unter jedem Match ein paar Kontextzeilen zu haben.
Diese.* Öffnen Sie * keine 85-GB-Datei in einem Editor.Entfernen Sie zuerst alle Flusen (natürlich ohne die Originaldatei zu beeinträchtigen).Wenn die Datei aufgrund der langen Protokollierungszeit groß ist, überprüfen Sie die Zeit in der Nähe des Vorfalls.Wenn es groß ist, weil es eine Momentaufnahme eines riesigen Systemzustands ist, z.Dumps eine Datenbank oder dergleichen, versuchen Sie, sich auf die relevanten Daten zu konzentrieren.
Wenn die Datei aus Zeilen besteht, ist es besser, anstelle von "split -b" "split -l" zu verwenden.Andernfalls würden Sie die Zeilen in zwei Hälften teilen.
Ich würde vorschlagen, "grep" abstürzen "My80GbFile.txt |less` statt `grep" Absturz "My80GbFile.txt |more`, nur um die Navigation und die Verwendung der Suche mit der Taste `/` zu vereinfachen.
bmike
2020-02-17 00:36:20 UTC
view on stackexchange narkive permalink

In Bezug auf Ihre unmittelbaren Bedürfnisse ist BBEdit (verknüpft mit dem Mac App Store-Download) der beste kostenlose visuelle Editor für macOS und er leistet so viel - ein wahres Kraftpaket. Sobald Sie es haben, können Sie auch für die Pro / Automation / Out-of-Dankbarkeit-Funktionen bezahlen, aber es ist für immer kostenlos, wenn Sie diesen Preis wollen und mögen.

Ich benutze auch vi , um Dinge zu bearbeiten, aber das öffnet eine Dose Würmer, um die Shell, die Terminal-App oder eine andere App zu benötigen, und einige Studien, um zu lernen, wie man den Editor verlässt (tldr; versuchen Sie es mit ZZ oder ZQ), passen Sie es an und bringen Sie Ihrem Gehirn bei, über das Bearbeiten von Text in der Zusammenfassung nachzudenken, anstatt Elemente mit der Maus auszuwählen. Ein Pager wie weniger oder mehr oder bat ist auch sehr benutzerfreundlich, um loszulegen und durch umfangreiche Dateien zu navigieren. (Und bat gibt Ihnen Flügel strike> fantastische Farben und Syntaxbewusstsein).

  brauen installieren Fledermaus
 

In Ihrem Fall ist die mit macOS gelieferte Konsolen-App möglicherweise auch einen Blick wert, wenn Sie die Suchfunktion dort verwenden können. Starten Sie die App aus dem Rampenlicht und ziehen Sie Ihre Monsterdatei auf das Fenster, um einen Blick darauf zu werfen.

+1 für BBEdit - Das BareBones-Team hat diese App im Laufe der Jahre speziell für den Umgang mit massiven Textdateien optimiert.
Bitte fügen Sie hinzu, ob dieser Editor tatsächlich eine 82.7G-Protokolldatei "Catalina.out" öffnen kann.Und ob es 85G RAM benötigt.
@reinierpost Die Wahrscheinlichkeit, dass jemand mit einer riesigen Protokolldatei herumwirbelt, ist gering.Ich bin mir nicht sicher, ob jemand außer dem Abfragenden dies richtig bestätigen kann.
@T.J.L.Es muss nicht bestätigt werden.Es ist genau dort in der Frage angegeben.Eine Antwort soll die gestellte Frage beantworten.
Vim unter Linux kann zum Bearbeiten sehr großer Dateien verwendet werden. Sie müssen jedoch wissen, wie das geht, bevor Sie versuchen, sie zu öffnen. Möglicherweise müssen Sie Plugins usw. deaktivieren.https://stackoverflow.com/questions/908575/how-to-edit-multi-gigabyte-text-files-vim-doesnt-work Ich gehe davon aus, dass Mac OS eine ähnliche Geschichte ist.Ich würde es nicht wirklich empfehlen, obwohl vim mein bevorzugter Texteditor ist.
@T.J.L.[Bestätigungsvoreingenommenheit] (https://en.wikipedia.org/wiki/Confirmation_bias) Je mehr Upvotes sie erhalten, desto mehr zukünftige Upvotes erhalten sie.Außerdem sind sie ein "181K Reputation Moderator" der _apple_ SE.Das ist ein großer Fisch in einem kleinen Teich.Ich habe BBEdit nicht persönlich ausprobiert, aber ich habe versucht, "weniger" und "mehr" für große Dateien zu verwenden, und sie sind keine gute Idee, es sei denn, Sie warten gerne, während Programme Dateien durchsuchen.`grep` ist gut.`ag` (The Silver Surfer) ist großartig: Ich weiß nichts über eine 82,7G (!) Textdatei, aber es kann in weniger als 60 Sekunden eine Zeichenfolge in allen Dateien auf meiner 128 GB (!!) SSD finden.
Entschuldigung, das wurde ungeschickt ausgedrückt, ich wollte nicht, dass es respektlos klingt, und jetzt ist es zu spät zum Bearbeiten: Eine bessere Art zu sagen wäre zu sagen, dass diese Art von Frage nicht der normale Standardtarif der Apple SE istund dass ich nicht vorhabe, versehentlich über bmikes guten Namen nachzudenken.
Danke @AaronF für deinen `ag` Tipp - das ist fantastisch.Größenordnungen schneller als grep (wahrscheinlich, weil Dateien in `.gitignore` ignoriert werden - zB` node_modules / ** `) und die Ergebnisse gut präsentiert werden.
@AaronF: Der Silbersucher, nicht Surfer, oder?
@AaronF brauchte keine Entschuldigung, nahm aber gerne an, wie es angeboten wurde.Ich liebe Fragen zu Antwort / Umfang / Eignung.Heck - Ich +1 die Antwort auf weniger, da es so prägnant ist.
Hobbamok
2020-02-17 16:02:10 UTC
view on stackexchange narkive permalink

Just nicht (als EINE Datei öffnen)

Gibt es einen bestimmten Grund, warum Sie es mit einem Skript nicht einfach in etwa 1 GB große Teile aufteilen können?

Ja, die Suche und ähnliche Funktionen leiden darunter, aber dies ist bereits bei einer 80-GB-Datei der Fall.

Wenn das Skript bestimmte Haltepunkte enthält (Tage im Zeitstempel, Start- / Herunterfahrmeldungen), können Sie es auch dafür aufteilen.Auf diese Weise würden Sie wahrscheinlich sogar zusätzliche Bedeutung in die Datei bekommen.

Außerdem: Sobald eine anständige IDE (wie IntelliJ IDEA oder eine andere) aufgeteilt ist, erhalten Sie Suchfunktionen über den Text zurück.

[Achtung: Dies kommt von einem Programmierer, ist also möglicherweise nicht Ihr Ansatz oder Overkill. Ich kann nur sagen, dass es am Ende funktionieren würde. Sie müssen wissen, ob es sich lohnt.]

jcaron
2020-02-18 00:18:04 UTC
view on stackexchange narkive permalink
  1. Verwenden Sie less in einem Terminalfenster. Es wird Ihnen jeweils eine Seite der Datei angezeigt, es wird nur ungefähr so ​​viel in den Speicher geladen, sodass Sie mit mehreren TB-Dateien darin navigieren können, wenn Sie möchten.

    Sie sollten wahrscheinlich die Option -n hinzufügen, um zu verhindern, dass less versucht, Zeilennummern zu berechnen. Also:

      less -n / path / to / file
     

    Denken Sie daran, dass Sie less -n eingeben (das letzte Leerzeichen nicht vergessen) und die Datei per Drag & Drop aus dem Finder in das Terminalfenster ziehen können, um den Pfad zu dieser Datei hinzuzufügen.

  2. Sobald Sie die Datei in less angezeigt haben, können Sie:

    • Navigieren Sie mit Aufwärts- / Abwärtspfeilen, Leerzeichen (eine Seite nach unten), b (eine Seite zurück) ...
    • Suche mit / . Sie können auch nach Zeilen suchen, die kein Muster mit /! enthalten. Bei der umgekehrten Suche wird ? verwendet. Bei allen Suchvorgängen wird jedoch die gesamte Datei gescannt. Besser auf einer SSD, wenn Sie das oft tun.
    • Navigieren Sie mit <number> zu einer bestimmten Zeile in der Datei, gefolgt von G (Großbuchstabe G)
    • Navigieren Sie mit <number> zu einem bestimmten Teil der Datei, gefolgt von % . Mit 50% gelangen Sie zur Mitte der Datei, 90% zu den letzten 10% usw.
  3. ol>

    Wenn Ihre Protokolldatei Zeitstempel enthält und Sie wissen, wann Sie suchen möchten, ist der schnellste Ansatz:

    1. Öffnen Sie die Datei
    2. Verwenden Sie eine "binäre Suche", um den groben Teil der Datei zu finden, an dem Sie interessiert sind:

      • Geben Sie 50% ein, um die Mitte der Datei
      • anzuzeigen
      • Wenn das gewünschte Teil gesucht wird, gehen Sie zu 75% , andernfalls 25%
      • Wiederholen Sie diesen Vorgang, bis Sie sich auf den entsprechenden Teil eingegrenzt haben.
    3. Verwenden Sie eine regelmäßige Suche (verwenden Sie / , um vorwärts zu gehen, oder ? , um rückwärts zu gehen), um genau die gesuchte Zeile zu finden (basierend auf beiden) Der genaue Zeitstempel oder ein bestimmtes Wort, das Sie kennen, zeigt das Problem.

    4. ol>

      Dies sollte es Ihnen ermöglichen, schnell und schnell zum relevanten Teil der Datei zu navigieren.


      Wenn Sie der Meinung sind, dass in einer Teilmenge der Datei häufig gesucht wird, können Sie alternativ grep mit einer bestimmten Datums- oder Datums- / Uhrzeitkombination (im richtigen Format) verwenden Extrahieren Sie diese Teilmenge in eine andere kleinere Datei. Wenn Sie beispielsweise wissen, dass der Absturz heute kurz nach Mittag stattgefunden hat, während Ihr Protokoll Monate umfasst, können Sie

        grep '2020-02-17 12:' / path / to / file > extrahiert-log.txt
       

      Dies würde Ihnen alle Zeilen geben, die einen Zeitstempel zwischen 12:00:00 und 12:59:59 enthalten. Das genaue Format hängt natürlich vom tatsächlichen Format ab, das für Zeitstempel verwendet wird.

      grep scannt die gesamte Datei einmal, um alle relevanten Zeilen zu finden. Dies kann bei einer sehr großen Datei eine Weile dauern, aber Sie haben dann eine viel besser verwaltbare Datei.


      Eine Alternative kann darin bestehen, einen Teil der Originaldatei mit dd zu "extrahieren", wobei Offsets und Längen verwendet werden, die in less ( Strg-G um den aktuellen Offset zu erhalten). dd ist ein sehr leistungsfähiges Tool, dessen Verwendung jedoch sehr gefährlich sein kann. Verwenden Sie es daher mit Vorsicht (und definitiv nicht als root oder mit sudo , wenn Sie sind sich nicht 100% sicher, was Sie tun):

        dd if = / path / to / original / file of = destination_file.txt bs = 1 skip = <start offset> count = <length>
       

      Beachten Sie, dass dies nicht sehr effizient ist. Verwenden Sie besser eine größere Blockgröße ( bs ), idealerweise eine Potenz von 2, z. B. 1024, und teilen Sie skip und zählt nach dieser Blockgröße.

      Ich bin mir ziemlich sicher, dass es andere Tools geben muss, die dasselbe tun, obwohl ich ein Leerzeichen zeichne.Ich denke, einige Versionen von cat können das, aber anscheinend nicht die unter macOS.

Vinil
2020-02-18 08:41:46 UTC
view on stackexchange narkive permalink

Bei festplattenbasierten Texteditoren wird die Datei nicht vollständig in den Speicher geladen. Auf der Benutzeroberfläche wird ein Blick in den Inhalt angezeigt, den der Editor in den Speicher geladen hat.Ich habe UltraEdit in der Vergangenheit erfolgreich für die Analyse großer Protokolldateien verwendet.Besonders nützlich sind die auf Regex basierenden Suchwerkzeuge und Standortlesezeichen.Die Datei wird schnell geladen, und Sie können nach regulären Ausdrücken suchen.Über die URL gelangen Sie zu einer Download-Seite, auf der Sie eine 30-Tage-Testversion herunterladen können.Es gibt auch andere festplattenbasierte Texteditoren.

Seit einigen Jahren habe ich UltraEdit installiert und die größte Datei geöffnet, die ich hatte.Es war eine 64-GB-Binärdatei, die sofort geöffnet wurde.Ich habe nach einem Begriff gesucht und das hat ungefähr 90 Sekunden gedauert.Ich habe die Dateigröße mit einem roten Rechteck unten rechts hervorgehoben.Der Mac ist ein MBP 2018 mit 8 GB RAM, auf dem Mojave ausgeführt wird.

Screenshot of UltraEdit with a 64GB file open and the search window open

Ja, UltraEdit wird den Trick machen.Aber nicht "sofort".Es wird 5-10 Minuten lang auf einer Datei dieser Größe laufen :)
@jwenting Sie könnten überrascht sein - UE ist SEHR gut im Umgang mit großen Dateien.
@MikeBrockington Ich weiß, ich benutze UE.Es dauerte ungefähr 5 Minuten, um einen 25-GB-SQL-Dump zu öffnen (was sehr hilfreich war, nichts anderes würde ihn öffnen), der vor einigen Wochen geändert werden musste, um auf einen anderen Computer geladen zu werden.
@jwenting - Sie haben Recht.Dies könnte die Kombination aus verfügbarem RAM (das System war nach einem Neustart mit minimalen laufenden Apps neu) + SSD (und der Datei auf derselben Festplatte) + OSX-Version (Mojave) + UE-Version (die neueste Version) gewesen sein.Wenn die Systemfestplatte aus Metall besteht (einer meiner Macs hat eine Metallfestplatte mit 5400 U / min), kann die Datei möglicherweise besser analysiert werden, indem sie auf eine UHSII 128 GB SD-Karte kopiert wird.
user2384366
2020-02-17 17:58:19 UTC
view on stackexchange narkive permalink

Versuchen Sie es mit Glogg.Auf der Download-Seite befindet sich ein MacO:

https://glogg.bonnefon.org/download.html

Ich kenne keine 80-GB-Dateien, aber regularly hat es (unter Windos) verwendet, um Protokolldateien mit bis zu 5 GB zu öffnenist very schnell).

Ein Hinweis: Es handelt sich um einen schreibgeschützten Analysator, nicht um einen Editor.

Es dauerte fast eine Stunde, um die Datei zu öffnen (mit einem Fortschrittsbalken, um mich wissen zu lassen, dass sie nicht einfach gesperrt war), aber sie öffnete sich, ermöglichte mir das Scrollen und Durchsuchen und führte mich direkt zum Problem(anscheinend eine enge Schleife).
Oh, und ein schreibgeschützter Analysator war genau das, was ich vorhatte, insbesondere angesichts der Tatsache, dass ich die relevanten Zeilen in ein Dokument von überschaubarer Größe kopieren konnte.
Eine andere Sache: Wenn Sie riesige Dateien untersuchen, deren Öffnen viele Minuten dauert, ist es wahrscheinlich eine gute Idee, zuerst in die Einstellungen zu gehen und "Letzte Sitzung laden" zu deaktivieren.
@hbquikcomjamesl Danke für die Info!Es ist gut zu wissen, dass Glogg mit solchen Giganten umgehen kann.
Harper - Reinstate Monica
2020-02-18 00:35:21 UTC
view on stackexchange narkive permalink

Sie würden nicht

Selbst ein Tolkien-Fan möchte keine 82,7 GB. Sie wollen nur bestimmte Teile davon; Sie werden es wissen, wenn Sie es sehen.

Und selbst die Betrachtung eines Tools, das die gesamte Datei analysiert , ist buchstäblich Zeitverschwendung. Es wird 15 Minuten dauern, nur die Datei mit 100 MB / s durchzulesen. Viel langsamer, wenn eine Analyse der Komplexität durchgeführt wird.

Terminal ist dein Freund

Der Lebensretter hier ist, dass OS X auf Unix basiert. Das war ein großer Teil von Apples Kauf von NeXT und Steve Jobs, die zurückkamen. Das heißt, Sie können die gesamte Suite von Unix-Tools verwenden, die äußerst ausgefeilt sind und hier sehr gut unterstützt werden.

Es gibt Dutzende von Möglichkeiten, dies ohne Perl zu tun. Da Perl jedoch in MacOS integriert und unendlich erweiterbar ist, beginne ich lieber dort (anstatt es in einem einfacheren Tool zu tun, möchte ich die Abfrage etwas verbessern, klicken Sie auf Grenzen dieses Werkzeugs und müssen es in einem anderen Werkzeug neu herstellen). So etwas in einer Datei mit dem Namen "xx":

  $ len = -s "filename.log"; Die Variable # wird zur Dateilänge
 open ($ IN, "<", "filename.log");
 suchen ($ IN, $ len - 10_000_000, 0); # perl erlaubt _ in Zahlen zur besseren Lesbarkeit

 while (< $ IN>) {# <> liest eine Zeile. Die Standardvariable ist metavariable $ _
   drucken; # ohne Argument, Standard ist metavariable $ _
 }}
 

Damit wird nicht die gesamte Datei gelesen. Suchen Sie einfach den angegebenen Speicherort (10 MB vom Ende entfernt) und lesen und drucken Sie alles bis zum Ende. Es wird nur auf dem Bildschirm gedruckt. Um es an die Datei zu senden, gehen Sie folgendermaßen vor:

  perl xx > tailfile.txt
 

Jetzt haben Sie eine 10 MB große Datei tailfile.txt, die Sie mit etwas anderem öffnen können.

Es gibt einfachere Möglichkeiten, genau das zu tun, aber nehmen wir an, Sie erkennen: "Warten Sie, ich möchte mehr tun. Ich möchte nur Fehler und Warnungen." Sie ändern also den Druckbefehl in

  print if / error / i oder / warning / i;# // stimmt mit Text überein, standardmäßig $ _
 

Auch dies kann mit einfacheren Tools erreicht werden, wenn Sie genügend Zeit damit verbringen, Dokumente zu durchsuchen.Aber dann entscheiden Sie, dass Sie die drei Zeilen nach dem Fehler sehen müssen.Einfach so ... Sie sind den einfacheren Tools entwachsen, aber das ist in Perl trivial.Sie können Perl so ziemlich für immer shimmen.Es gibt dort eine vollständige Programmiersprache.Objektorientiert und alles.

Ich bin ein großer Perl-Fan, aber wenn Sie nur das Ende einer Datei wollen, ist `tail -c ` wahrscheinlich viel einfacher :-)
@jcaron Sicher, wenn Ihre Bedürfnisse dort aufhören.Wie ich besprochen habe.Aber wann hören Ihre Bedürfnisse dort jemals auf?
Curt
2020-02-18 17:30:31 UTC
view on stackexchange narkive permalink

Eine so große Datei ist wahrscheinlich zu 99,999999% redundant (im wahrsten Sinne des Wortes). Der Schlüssel besteht also darin, zig Mal auftretende Zeilen bis zu einem gewissen Grad an Ähnlichkeit zu entfernen und zu untersuchen, was übrig bleibt.

Unter Linux gibt es ein Dienstprogramm namens petit , mit dem große Protokolldateien analysiert werden können. Eine Beispielverwendung ist petit --hash /var/log/kern.log . Das Dienstprogramm kann wahrscheinlich für Mac gefunden oder erstellt werden.

Es verarbeitet jede Zeile der Datei, um Dinge zu entfernen, die die Zeile eindeutig machen. Entfernen Sie beispielsweise das Datum aus jeder Zeile und ersetzen Sie alle Ziffernfolgen durch ein einzelnes # -Zeichen. Jede generische Zeile wird dann gehasht, um ein Fingerabdruck zum Erkennen ähnlicher Zeilen zu werden.

Das Ergebnis ist, dass jede Zeile nur einmal mit einer Anzahl von Vorkommen ausgegeben wird, wodurch die Größe der Daten erheblich reduziert wird. Alles Ungewöhnliche wird wahrscheinlich deutlich sichtbar, und dann kann man gezielt danach suchen, indem man Dienstprogramme aus einigen der anderen Antworten hier verwendet.

Ich weiß nicht, ob dieses Dienstprogramm für etwas dieser Größe leistungsfähig genug ist. Ich würde ja wetten, da es Optionen zum Zeichnen von Diagrammen in der Größenordnung von Monaten oder Jahren der Eingabe gibt und nicht viel außer einer kleinen Anzahl von Fingerabdrücken speichern muss. Im schlimmsten Fall können Sie Ihre eigenen schreiben: Generieren Sie sie für jede Eingabezeile zu einem Fingerabdruck, hashen Sie sie und fügen Sie sie einer Datenbank mit Hash + Fingerabdruck + Anzahl hinzu, die durch Hash indiziert ist.

EDIT : petit scheint mehr CPU und Speicher zu verbrauchen als gewünscht, daher habe ich meine eigene einfache Implementierung geschrieben: https://github.com/curtmcd / Hashlog. Es macht einen Durchgang durch die Protokolldatei; Es wird mit ungefähr 6,5 Sekunden / GB auf meinem Ubuntu-Heimserver verarbeitet.

"Petit" wird keine Erfolgsgeschichte sein.Ich habe es gerade mit einer Protokolldatei von ~ 1,1 GB versucht.Es verbrauchte den gesamten verfügbaren Speicher und es dauerte ca. 5 Minuten, bis ich ihn unterbrach.Ein Tool, das für jede Zeile in einer Datei einen Hash erstellt, um Duplikate zu erkennen, schlägt bei dieser Aufgabe fehl.
Die Erwartung ist, dass nur eine Hash-Tabelle mit eindeutigen Signaturzeichenfolgen gespeichert werden muss, nicht jede Zeile, um die Datei ein einziges Mal zu scannen.Die Anzahl der Einträge sollte nicht viel höher sein als die Anzahl der eindeutigen Drucke in Programmen, die in das Protokoll schreiben, normalerweise in der Größenordnung von Hunderten.`petit` ist möglicherweise keine so großartige Implementierung, und ich gebe zu, ich habe es nur mit einer 30-MB-Protokolldatei versucht.Ich habe meine eigene geschrieben und werde die Antwort aktualisieren.
little_birdie
2020-02-17 20:18:57 UTC
view on stackexchange narkive permalink

"joe", auch bekannt als Joes eigener Editor, wurde entwickelt, um nur Teile der Datei nach Bedarf zu laden.Ich habe es noch nie für eine so große Datei verwendet, aber ich bin nie auf eine Textdatei gestoßen, die zu groß ist, um sie zu öffnen.

Alex
2020-02-20 00:32:27 UTC
view on stackexchange narkive permalink

Auf jeden Fall Hex Fiend.Es öffnet Dateien OHNE RAM.Es liest einfach von der Festplatte.Die Leistung ist absolut unglaublich.Ich habe bereits 500 GB Passwort-Dumps damit untersucht.

https://ridiculousfish.com/hexfiend/

Tom Tran
2020-02-18 20:35:21 UTC
view on stackexchange narkive permalink

Öffnen Sie das Terminal und öffnen Sie es mit vim

  vim filename.txt
 

P / s:

Geben Sie vim ein und ziehen Sie die Datei auf Ihr Terminal.Drücken Sie dann die Eingabetaste.

So beenden Sie vim (ohne Bearbeitung):

 : q!
 
Wie funktioniert das mit einer Datei der in der Frage beschriebenen Größe?
Verwenden Sie besser `vim -r`, um die Erstellung großer Auslagerungsdateien zu vermeiden.
Ich bin mir nicht sicher, ob die Leute das `: q!` Verstehen würden.Es ist nicht alles offensichtlich, dass Sie es einfach direkt eingeben.
Panos Kordis
2020-02-19 15:29:30 UTC
view on stackexchange narkive permalink

Ich würde empfehlen, Sublime Text zu verwenden.Obwohl eine Lizenz erforderlich ist, kann sie ohne Zeit- oder Funktionseinschränkungen kostenlos heruntergeladen und ausgewertet werden.Das bedeutet, dass Sie oder Ihr Unternehmen die Möglichkeit haben, es so oft auszuprobieren, wie Sie möchten.Ich persönlich verwende es, um Protokolle mit vielleicht sogar 3-4 GB in den meisten Fällen oder SQL-Dumps mit sogar 12 GB zu untersuchen.Beim ersten Öffnen wird die gesamte Datei durchlaufen, um eine Indizierung der ersten Ebene usw. durchzuführen. Es wird jedoch ein Fortschrittsbalken angezeigt, der den Fortschritt des gesamten Prozesses anzeigt.

Haben Sie persönliche Erfahrungen mit der Verwendung von Sublime Text zum Öffnen einer 83-GB-Datei?Positive persönliche Erfahrung?In Ihrer Antwort werden nur Dateien erwähnt, die fast eine Größenordnung kleiner sind.
Nein, deshalb empfehle ich, es auszuprobieren, um seine Eignung zu beurteilen.Die Tatsache, dass ich aus meiner persönlichen Erfahrung keine Probleme mit der Verarbeitung von Dateien bis zu 12 GB hatte, und die Tatsache, dass die Einschränkungen der Anwendung nichts über max.Dateigröße bedeutet, dass es kein Problem geben sollte, eine Datei beliebiger Größe zu lesen. Das OP interessiert sich für drei Dinge: Lesen der Datei, Halten der Speichernutzung, keine Anzeichen eines Einfrierens der App.Sublime rendert beim Indizieren einen Fortschrittsbalken und eignet sich besonders gut zum Lesen und Durchsuchen riesiger Dateien


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 4.0-Lizenz, unter der er vertrieben wird.
Loading...