Öffnen Sie eine Datei an einer bestimmten Position und lesen Sie ein Byte in Bash

Öffnen Sie eine Datei an einer bestimmten Position und lesen Sie ein Byte in Bash

Da bereits zwei Personen für die Schließung dieses Beitrags gestimmt haben, werde ich versuchen, die Frage so klar wie möglich zu formulieren. Eine Datei auf einem physischen Gerät wird als binäre Sequenz dargestellt. Das heißt, ich muss die Unterschiede zwischen den Darstellungen zweier Dateien auf einer solchen Ebene prüfen (d. h. ich muss die Unterschiede zwischen mehreren Bytes an derselben Position in zwei verschiedenen Dateien vergleichen) und diese Unterschiede in einem bashSkript ausgeben.

Beispiel:

file1: 00000000 01010101 10101010 11001100 00110011

file2: 00000000 01010101 01010101 00110011 00110011

Das Skript sollte Folgendes ausgeben:

differences: Byte 3 (file 1: 01010101; file2 10101010), Byte 4 (file1: 11001100; file 2: 00110011)

Oder so ähnlich.

Das erste, was ich tun muss, um dies zu erreichen, ist, zumindest in der Lage zu sein, eine Datei an einer bestimmten Position zu öffnen, ein Byte zu lesen und dieses Byte auszugeben/speichern. Ich könnte ein CProgramm dafür schreiben, abergibt es eine Möglichkeit, dies innerhalbbash?

Antwort1

Sie können es versuchen cmp. Dabei werden zwei Dateien Byte für Byte verglichen.

Ausman cmp:

cmp - compare two files byte by byte

Allerdings muss die Anzahl der Zeilen in beiden Dateien gleich sein. Beachten Sie auch, dass cmpnur auf den ersten Unterschied verwiesen wird. Um auf die nächsten Unterschiede zu verweisen, können Sie von Anfang an bestimmte Bytes überspringen.

$ cat foo 
this is
a test
$ cat bar
this
is a test
$ cmp foo bar 
foo bar differ: byte 5, line 1
$ cmp -b foo bar 
foo bar differ: byte 5, line 1 is  40    12 ^J

Um die unterschiedlichen Bytewerte auszudrucken, verwenden Sie cmp -l, von man cmp:

   -l, --verbose
          output byte numbers and differing byte values

Antwort2

Sie können es mit Folgendem versuchen vimdiff:

vimdiff -b file1 file2

Bildbeschreibung hier eingeben

verwandte Informationen