Toto vytiskne offset a bajty v hexadecimálním formátu:
cmp -l file1.bin file2.bin | gawk '{printf "%08X %02X %02X\n", $1, strtonum(0$2), strtonum(0$3)}'
Nebo proveďte $1-1 aby první vytištěný ofset začínal na 0.
cmp -l file1.bin file2.bin | gawk '{printf "%08X %02X %02X\n", $1-1, strtonum(0$2), strtonum(0$3)}'
Bohužel strtonum() je specifický pro GAWK, takže pro jiné verze awk – např. mawk – budete muset použít funkci převodu z osmičkového na desítkové. Například,
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)}'
Přerušeno kvůli čitelnosti:
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)
}'
Jako ~kvak upozornil:
% xxd b1 > b1.hex
% xxd b2 > b2.hex
A pak
% diff b1.hex b2.hex
nebo
% vimdiff b1.hex b2.hex
diff + xxd
Zkuste diff v následující kombinaci substituce procesu zsh/bash:
diff -y <(xxd foo1.bin) <(xxd foo2.bin)
Kde:
-yzobrazuje rozdíly vedle sebe (volitelné).xxdje nástroj CLI pro vytvoření hexdump výstupu binárního souboru.- Přidejte
-W200nadiffpro širší výstup (200 znaků na řádek). - Pro barvy použijte
colordiffjak je uvedeno níže.
colordiff + xxd
Pokud máte colordiff , může zbarvit diff výstup, např.:
colordiff -y <(xxd foo1.bin) <(xxd foo2.bin)
Ukázkový výstup:

vimdiff + xxd
Můžete také použít vimdiff , např.
vimdiff <(xxd foo1.bin) <(xxd foo2.bin)
Rady:
- jsou-li soubory příliš velké, přidejte limit (např.
-l1000) pro každýxxd
příkaz bash watch se zachovanými barvami
Jak se mohu vyhnout ověření hostitele SSH pro známé hostitele?