특정 위치에서 파일을 열고 bash에서 1바이트를 읽습니다.

특정 위치에서 파일을 열고 bash에서 1바이트를 읽습니다.

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

여기에 이미지 설명을 입력하세요

관련 정보