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.