Questo stamperà l'offset e i byte in esadecimale:
cmp -l file1.bin file2.bin | gawk '{printf "%08X %02X %02X\n", $1, strtonum(0$2), strtonum(0$3)}'
 Oppure fai $1-1 per fare in modo che il primo offset stampato inizi da 0.
cmp -l file1.bin file2.bin | gawk '{printf "%08X %02X %02X\n", $1-1, strtonum(0$2), strtonum(0$3)}'
 Sfortunatamente, strtonum() è specifico di GAWK, quindi per altre versioni di awk, ad esempio mawk, dovrai usare una funzione di conversione da ottale a decimale. Ad esempio,
cmp -l file1.bin file2.bin | mawk 'function oct2dec(oct,     dec) {for (i = 1; i <= length(oct); i++) {dec *= 8; dec += substr(oct, i, 1)}; return dec} {printf "%08X %02X %02X\n", $1, oct2dec($2), oct2dec($3)}'
Scomposto per leggibilità:
cmp -l file1.bin file2.bin |
    mawk 'function oct2dec(oct,    dec) {
              for (i = 1; i <= length(oct); i++) {
                  dec *= 8;
                  dec += substr(oct, i, 1)
              };
              return dec
          }
          {
              printf "%08X %02X %02X\n", $1, oct2dec($2), oct2dec($3)
          }'
Come ~quack sottolineato:
 % xxd b1 > b1.hex
 % xxd b2 > b2.hex
E poi
 % diff b1.hex b2.hex
o
 % vimdiff b1.hex b2.hex
diff + xxd 
 
 Prova diff nella seguente combinazione di sostituzione del processo zsh/bash:
diff -y <(xxd foo1.bin) <(xxd foo2.bin)
Dove:
- -ymostra le differenze fianco a fianco (facoltativo).
- xxdè uno strumento CLI per creare un output hexdump del file binario.
- Aggiungi -W200adiffper un output più ampio (di 200 caratteri per riga).
- Per i colori, usa colordiffcome mostrato di seguito.
colordiff + xxd 
 
 Se hai colordiff , può colorare diff output, ad esempio:
colordiff -y <(xxd foo1.bin) <(xxd foo2.bin)
Esempio di output:
 
vimdiff + xxd 
 
 Puoi anche usare vimdiff , ad esempio
vimdiff <(xxd foo1.bin) <(xxd foo2.bin)
Suggerimenti:
- se i file sono troppo grandi, aggiungi limite (ad es. -l1000) per ognixxd