Ich schreibe ein Bash-Skript, das den Header (die ersten 10 Bytes) einer Datei abrufen und dann in einem anderen Abschnitt alles außer den ersten 10 Bytes abrufen muss. Dies sind Binärdateien, die wahrscheinlich in den ersten 10 Bytes \0
'und \n
' enthalten. Es scheint, dass die meisten Dienstprogramme mit ASCII-Dateien arbeiten. Was ist ein guter Weg, um diese Aufgabe zu erreichen?
80
Antworten:
So erhalten Sie die ersten 10 Bytes, wie bereits erwähnt:
So erhalten Sie alle bis auf die ersten 10 Bytes (zumindest mit GNU
tail
):quelle
dd
Idee hat mir gefallen , aber diese Option erfordert keine Änderung der Puffergröße, sodass sie gut mit großen Dateien funktioniert. Vielen Dank.head -c 10
macht hier das Richtige.quelle
Mit dem
dd
Befehl können Sie eine beliebige Anzahl von Bytes aus einer Binärdatei kopieren.dd if=infile of=outfile1 bs=10 count=1 dd if=infile of=outfile2 bs=10 skip=1
quelle
dd
ist nicht zuverlässig. Es kann aus vielen verschiedenen Gründen weniger Bytes lesen als angefordert.{ printf a; sleep 1; printf b; } | dd bs=2 count=1 2>/dev/null | wc -c