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.
Govind Kailas
quelle

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.
Sarnold
quelle
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
14

Auf einigen Systemen (z. B. Mac) müssen Sie verwenden gzcat.

Marcelo Cantos
quelle
10

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

zcat < CONN.20111109.0057.gz|head

Punkrockpolly
quelle
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.

Herpes-freier Ingenieur
quelle