So erhalten Sie einige Zeilen aus einer .gz-komprimierten Datei, ohne sie zu dekomprimieren


85

Wie bekomme ich die ersten paar Zeilen aus einer gziped-Datei? Ich habe versucht, zcat, aber es wirft einen Fehler

zcat CONN.20111109.0057.gz|head
CONN.20111109.0057.gz.Z: A file or directory in the path name does not exist.

Antworten:


144

zcat(1)kann entweder von compress(1)oder von geliefert werden gzip(1). Auf Ihrem System scheint es so zu sein compress(1)- es sucht nach einer Datei mit einer .ZErweiterung.

Wechseln Sie zu gzip -cdanstelle von zcatund Ihr Befehl sollte einwandfrei funktionieren:

 gzip -cd CONN.20111109.0057.gz | head

Erläuterung

   -c --stdout --to-stdout
          Write output on standard output; keep original files unchanged.  If there are several input files, the output consists of a sequence of independently compressed members. To obtain better compression, concatenate all input files before compressing
          them.

   -d --decompress --uncompress
          Decompress.

7
Übrigens, wenn Sie mit einem * .tar.gz sitzen, wird dies Ihnen helfen: tar -xzOf some_huge_file.tar.gz | head
Demaniak

Alter Thread, aber dies erzeugt eine kaputte Pipe mit dem Exit-Status 1 mit großen GZ-Dateien. Irgendeine saubere Problemumgehung?
Kaligne

2
Beste und einfachste Problemumgehung, die ich bisher gefunden habe: Verwenden zless file.gz | head. zmorelässt dich immer noch mit gebrochenem Rohr. zlessscheint der richtige Weg zu sein.
Kaligne

zless wird nicht beendet ... zumindest nicht in meiner großen Datei. Ich bin immer noch auf der Suche nach einer Möglichkeit, dies ohne Rohrbruch zu tun ...
Freek


10

Auf einem Mac müssen Sie <Folgendes mit zcat verwenden:

zcat < CONN.20111109.0057.gz|head


2

Wenn ein kontinuierlicher Linienbereich erforderlich ist, kann eine Option sein:

gunzip -c file.gz | sed -n '5,10p;11q' > subFile

wobei die Zeilen zwischen der 5. und 10. Zeile (beide einschließlich) von file.gzin eine neue extrahiert werden subFile. Für sedOptionen finden Sie in der Bedienungsanleitung .

Wenn beispielsweise jede fünfte Zeile erforderlich ist:

gunzip -c file.gz | sed -n '1~5p;6q' > subFile

Das extrahiert die 1. Zeile und springt über 4 Zeilen und wählt die 5. Zeile und so weiter.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.