Frage

Ich bin auf einem gemeinsam genutzten Server mit eingeschränktem Speicherplatz, und ich habe eine gz Datei bekam, dass Super erweitert sich in eine riesige Datei, mehr als das, was ich habe. Wie kann ich es „Teil“ durch „Teil extrahieren (können zu einem Zeitpunkt 10 MB sagen), und jedes Teil verarbeiten, ohne auch nur vorübergehend, die ganze Sache zu extrahieren!

Nein, das ist nur eine Super große komprimierte Datei, nicht eine Reihe von Dateien bitte ...


Hallo David, Ihre Lösung sieht sehr elegant, aber wenn ich es richtig bereitet, scheint es, wie jedes Mal, gunzip Auszüge aus dem Anfang der Datei (und der Ausgang davon weggeworfen wird). Ich bin sicher, dass eine große Belastung auf dem gemeinsamen genutzten Server würde was ich bin auf (ich glaube nicht, dass sein „Lesen voraus“ überhaupt) - Sie haben keine Erkenntnisse darüber, wie i „überspringen“ die notwendige Anzahl macht gunzip kann von Blöcken?

War es hilfreich?

Lösung

Wenn Sie tun dies mit (Unix / Linux) Shell-Tool, Sie gunzip -c zu dekomprimieren zu stdout verwenden können, dann verwenden dd mit den skip und count Optionen nur ein Klumpen zu kopieren.

Zum Beispiel:

gunzip -c input.gz | dd bs=10485760 skip=0 count=1 >output

dann überspringen = 1, überspringen = 2, etc.

Andere Tipps

Leider weiß ich nicht, von einem vorhandenen Unix-Befehl, der genau das tut, was Sie brauchen. Man könnte es leicht mit einem kleinen Programm in jeder beliebigen Sprache zu tun, zum Beispiel in Python, cutter.py (beliebige Sprache wäre ebenso natürlich auch tun):

import sys
try:
  size = int(sys.argv[1])
  N = int(sys.argv[2])
except (IndexError, ValueError):
  print>>sys.stderr, "Use: %s size N" % sys.argv[0]
  sys.exit(2)
sys.stdin.seek((N-1) * size)
sys.stdout.write(sys.stdin.read(size))

Jetzt gunzip <huge.gz | python cutter.py 1000000 5 > fifthone wird in der Datei fifthone setzt genau eine Million Bytes, die ersten 4 Millionen Byte im unkomprimierten Strom zu überspringen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top