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:
-y
menampilkan perbedaan secara berdampingan (opsional).xxd
adalah alat CLI untuk membuat output hexdump dari file biner.- Tambahkan
-W200
kediff
untuk keluaran yang lebih luas (200 karakter per baris). - Untuk warna, gunakan
colordiff
seperti 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?