Открыть файл в определенной позиции и прочитать один байт в bash

Открыть файл в определенной позиции и прочитать один байт в bash

Поскольку два человека уже проголосовали за закрытие этого поста, я постараюсь сделать вопрос максимально понятным. Файл на физическом устройстве представлен в виде двоичной последовательности. При этом мне нужно проверить различия между представлениями двух файлов на таком уровне (т. е. мне нужно сравнить различия между несколькими байтами в одной и той же позиции в двух разных файлах) и вывести эти различия в скрипте bash.

Пример:

file1: 00000000 01010101 10101010 11001100 00110011

file2: 00000000 01010101 01010101 00110011 00110011

Скрипт должен вывести:

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

Или что-то в этом роде.

Итак, первое, что мне нужно сделать, чтобы достичь этого, это иметь возможность хотя бы открыть файл в определенной позиции и прочитать один байт и вывести/сохранить этот байт. Я мог бы написать программу, Cчтобы сделать это, ноесть ли способ сделать это вbash?

решение1

Можете попробовать cmp. Он сравнит два файла побайтно.

Отman cmp:

cmp - compare two files byte by byte

Хотя количество строк должно быть одинаковым в двух файлах. Также обратите внимание, что это cmpбудет указывать только на первое различие, чтобы указать на следующие различия, вы можете пропустить определенные байты с начала.

$ 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

Для печати различных значений байтов используйте cmp -l, из man cmp:

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

решение2

Вы можете попробовать с vimdiff:

vimdiff -b file1 file2

введите описание изображения здесь

Связанный контент