Откройте файл в определенной позиции и прочитайте один байт в 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
задан 27 March 2015 в 13:34

2 ответа

Можно попробовать 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
4
ответ дан 27 March 2015 в 13:34

Можно попробовать vimdiff:

vimdiff -b file1 file2

enter image description here

1
ответ дан 27 March 2015 в 13:34

Другие вопросы по тегам:

Похожие вопросы: