cmp -l은 차이점을 어떻게 표시합니까?

cmp -l은 차이점을 어떻게 표시합니까?

사용 중이지만 cmp (GNU diffutils) 3.7("출력 바이트 수 및 고유 바이트 값")의 출력이 혼란스럽습니다.cmp -l/--verbose

처음에 몇 바이트를 제외하고는 거의 동일한 두 개의 파일이 있습니다.

$ ls -n x*
-rw-rw-r-- 1 1000 1000 345776 Jun 16 10:41 x-6.xz
-rw-rw-r-- 1 1000 1000 345776 Jun 16 10:04 x-9.xz
$ hexdump -C x-6.xz | head -3
00000000  fd 37 7a 58 5a 00 00 04  e6 d6 b4 46 02 00 21 01  |.7zXZ......F..!.|
00000010  16 00 00 00 74 2f e5 a3  e2 1c bb ef ff 5d 00 39  |....t/.......].9|
00000020  18 4a a7 22 04 94 b3 4a  c8 bc d2 00 4b 8c be aa  |.J."...J....K...|
$ hexdump -C x-9.xz | head -3
00000000  fd 37 7a 58 5a 00 00 04  e6 d6 b4 46 02 00 21 01  |.7zXZ......F..!.|
00000010  1c 00 00 00 10 cf 58 cc  e2 1c bb ef ff 5d 00 39  |......X......].9|
00000020  18 4a a7 22 04 94 b3 4a  c8 bc d2 00 4b 8c be aa  |.J."...J....K...|
$ diff <(hexdump -C x-6.xz) <(hexdump -C x-9.xz)
2c2
< 00000010  16 00 00 00 74 2f e5 a3  e2 1c bb ef ff 5d 00 39  |....t/.......].9|
---
> 00000010  1c 00 00 00 10 cf 58 cc  e2 1c bb ef ff 5d 00 39  |......X......].9|
$ 

나를 혼란스럽게 만드는 것은 내가 할 때입니다 cmp -l.

$ cmp -l x-6.xz x-9.xz 
    17  26  34
    21 164  20
    22  57 317
    23 345 130
    24 243 314
$ 

바이트 17은 x-6.xz에서 26, x-9.xz에서 34의 값을 갖는다고 말하는 것 같습니다. 이것은 잘못된 것입니다. 실제로 바이트 16(즉, 0x10)에는 0x16 및 0x1c(각각 22 및 28) 값이 있습니다. 또한 cmp는 바이트 23의 값이 345임을 나타냅니다. 어떻게 바이트가 255보다 클 수 있습니까? 출력이 무엇을 의미하는지 오해하고 있는 것 같지만 출력 man cmp이 무엇인지는 나타내지 않는 것 같습니다.

답변1

cmp 1부터 시작하여 오프셋을 계산하고 바이트 값을 8진수로 표시합니다.:

17  26  34

hexdump오프셋 17( 0에서 시작하므로 출력에서는 0x10)에 있는 바이트의 값이 026 8진수임을 의미합니다 .첫 번째 파일의 10진수 22인 8진수 034,두 번째 파일의 10진수 28입니다.

관련 정보