これにより、オフセットとバイトが 16 進数で出力されます:
cmp -l file1.bin file2.bin | gawk '{printf "%08X %02X %02X\n", $1, strtonum(0$2), strtonum(0$3)}'
または $1-1
を実行します 最初に印刷されるオフセットを 0 から開始します。
cmp -l file1.bin file2.bin | gawk '{printf "%08X %02X %02X\n", $1-1, strtonum(0$2), strtonum(0$3)}'
残念ながら、strtonum()
は GAWK に固有であるため、他のバージョンの awk (mawk など) では、8 進数から 10 進数への変換関数を使用する必要があります。たとえば、
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)}'
読みやすくするために分割:
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)
}'
As ~Quack 指摘:
% xxd b1 > b1.hex
% xxd b2 > b2.hex
そして
% diff b1.hex b2.hex
または
% vimdiff b1.hex b2.hex
diff
+ xxd
diff
を試す 次の zsh/bash プロセス置換の組み合わせ:
diff -y <(xxd foo1.bin) <(xxd foo2.bin)
場所:
-y
違いを並べて表示します (オプション)。xxd
バイナリ ファイルの 16 進ダンプ出力を作成する CLI ツールです。-W200
を追加diff
まで より広い出力用 (1 行あたり 200 文字)。- 色には、
colordiff
を使用します 以下に示すとおりです。
colordiff
+ xxd
colordiff
の場合 、 diff
に色付けできます 出力例:
colordiff -y <(xxd foo1.bin) <(xxd foo2.bin)
出力例:
vimdiff
+ xxd
vimdiff
も使用できます 、例
vimdiff <(xxd foo1.bin) <(xxd foo2.bin)
ヒント:
- ファイルが大きすぎる場合は、制限を追加します (例:
-l1000
)xxd
ごとに