При сравнении файлов cmp -l выводит различающиеся байты в восьмеричном виде, а адреса в десятичном, начиная с 1. Как заставить его выводить в шестнадцатеричном и начиная с 0?
В данном примере prinft это функция перла, вызвать для каждой строки /usr/bin/printf накладно, но, в баше printf тоже встроенный, поэтому можно так, если, допустим, нету perl'а:
cmp -l file1 file2 | while read L A B ; do printf "%X %X %X\n" $((L-1)) 0$A 0$B ; done