Ich habe ein Dateiverarbeitungsprogramm geschrieben und muss jetzt aus einer gezippten Datei lesen (.gz entpackte Datei kann so groß wie 2 TB werden),
Gibt es eine sed-Entsprechung für gezippte Dateien wie (zcat / cat) oder was wäre der beste Ansatz, um das Folgende effizient zu machen?
%Vor%$ counts: counter zum Lesen (zeilenweise)
Die obige Methode funktioniert, ist aber für große Dateien ziemlich langsam, da ich jede Zeile lesen und den Abgleich in bestimmten Feldern durchführen muss.
Danke
Obwohl nicht direkt hilfreich, hier eine Reihe von zcommands
Nun, Sie können entweder mehr Geschwindigkeit (d. h. unkomprimierte Dateien verwenden) oder mehr freien Speicherplatz (d. h. komprimierte Dateien und die von Ihnen angezeigte Pipe verwenden) ... sorry. Die Verwendung komprimierter Dateien hat immer einen Overhead.
Wenn Sie die interne Struktur des Komprimierungsformats verstehen, ist es möglich, dass Sie einen Muster-Matcher schreiben, der komprimierte Daten verarbeiten kann, ohne ihn vollständig zu dekomprimieren, sondern einfach aus den komprimierten Daten ermittelt, ob das Muster vorhanden ist ein bestimmtes Stück dekomprimierter Daten.
Wenn das Muster überhaupt komplex ist, klingt das wie ein ziemlich kompliziertes Projekt, da Sie Fälle behandeln müssen, in denen das Muster durch die Kombination der Ausgabe von zwei (oder mehr) separaten Dekompressionsabschnitten erfüllt werden kann. p>