이미 두 사람이 이 게시물을 종료하기로 투표했으므로 질문을 최대한 명확하게 설명하겠습니다. 물리적 장치의 파일은 바이너리 시퀀스로 표시됩니다. 즉, 내가 해야 할 일은 해당 수준에서 두 파일의 표현 간의 차이점을 확인하고(즉, 서로 다른 두 파일에서 동일한 위치에 있는 여러 바이트 간의 차이점을 비교해야 함) 그러한 차이점을 출력하는 것입니다. 스크립트 에서 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