Re: cut in Binärdatei /Binärdatei aufspalten
Jens Gruentjes wrote:
ich suche seit einiger Zeit nach einer Möglichkeit, Teile aus einer Binärdatei herauszuschneiden. Ich hatte gehofft, das ginge mit cut oder mit dd, aber leider hat das bei mir nicht funktioniert.
Die Datensaätze in den Binärdateien, um die es geht, haben alle eine feste Länge, sagen wir mal 8700 Bytes. Der gesamte Datenbestand umfasst 38000 Sätze, so dass die Datei insgesamt 330.600.000 Bytes groß ist. Ich möchte jetzt aus dieser Datei die Bytes 1 bis 1000, 3000 bis 3500 und 8500 bis 8700 ausschneiden und damit einen neuen Datensatz mit der Länge 1700 Bytes erzeugen. Die gesamte Datei hätte dann die Größe 64.600.000 Bytes.
Ein schneller Hack (das geht bestimmt auch viel eleganter, aber für tuning bin ich jetzt zu faul): --- cut here --- #!/usr/bin/perl -w use strict; my ($p1, $p2, $p3, $dummy); my $infile=shift; my $outfile=shift; open IN, "<$infile" or die "can't open infile\n"; open OUT, ">$outfile" or die "can't open outfile\n"; while (read (IN, $p1, 1000) == 1000) { read (IN, $dummy, 2000) or die; read (IN, $p2, 500) or die; read (IN, $dummy, 5000) or die; read (IN, $p3, 200) or die; printf OUT "$p1$p2$p3" or die; } close IN; close OUT; --- cut here --- Aufruf mit "PRG infile outfile" Andreas
participants (1)
-
Kyek, Andreas, VF-DE