Ini akan mencetak offset dan byte dalam hex:
cmp -l file1.bin file2.bin | gawk '{printf "%08X %02X %02X\n", $1, strtonum(0$2), strtonum(0$3)}'
Atau lakukan $1-1 agar cetak offset pertama dimulai dari 0.
cmp -l file1.bin file2.bin | gawk '{printf "%08X %02X %02X\n", $1-1, strtonum(0$2), strtonum(0$3)}'
Sayangnya, strtonum() khusus untuk GAWK, jadi untuk versi lain dari awk—mis., mawk—Anda perlu menggunakan fungsi konversi oktal ke desimal. Misalnya,
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)}'
Rusak agar mudah dibaca:
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)
}'
Sebagai ~dukun menunjukkan:
% xxd b1 > b1.hex
% xxd b2 > b2.hex
Dan kemudian
% diff b1.hex b2.hex
atau
% vimdiff b1.hex b2.hex
diff + xxd
Coba diff dalam kombinasi substitusi proses zsh/bash berikut:
diff -y <(xxd foo1.bin) <(xxd foo2.bin)
Dimana:
-ymenampilkan perbedaan secara berdampingan (opsional).xxdadalah alat CLI untuk membuat output hexdump dari file biner.- Tambahkan
-W200kediffuntuk keluaran yang lebih luas (200 karakter per baris). - Untuk warna, gunakan
colordiffseperti yang ditunjukkan di bawah ini.
colordiff + xxd
Jika Anda sudah colordiff , dapat mewarnai diff keluaran, misalnya:
colordiff -y <(xxd foo1.bin) <(xxd foo2.bin)
Keluaran sampel:

vimdiff + xxd
Anda juga dapat menggunakan vimdiff , mis.
vimdiff <(xxd foo1.bin) <(xxd foo2.bin)
Petunjuk:
- jika file terlalu besar, tambahkan batas (misalnya
-l1000) untuk setiapxxd
perintah bash watch dengan warna dipertahankan
Bagaimana saya bisa menghindari verifikasi host SSH untuk host yang dikenal?