由于已经有两个人投票决定关闭这篇文章,我会尽量把问题说清楚。物理设备上的文件表示为二进制序列。话虽这么说,我需要做的是在这样的级别检查两个文件的表示之间的差异(即我需要比较两个不同文件中同一位置的多个字节之间的差异),并输出这些差异在bash
脚本中。
例子:
file1: 00000000 01010101 10101010 11001100 00110011
file2: 00000000 01010101 01010101 00110011 00110011
该脚本应输出:
differences: Byte 3 (file 1: 01010101; file2 10101010), Byte 4 (file1: 11001100; file 2: 00110011)
或者沿着这些路线的东西。
因此,为了实现这一点,我需要做的第一件事是至少能够在某个位置打开文件并读取一个字节并输出/存储该字节。我可以编写一个C
程序来做到这一点,但有没有办法在其中做到这一点bash
?
你可以试试
cmp
。它将逐字节比较两个文件。来自
man cmp
:尽管两个文件的行数必须相等。另请注意,它
cmp
只会指向第一个差异,要指向下一个差异,您可以从头开始跳过特定字节。要打印不同的字节值,请使用
cmp -l
, fromman cmp
:您可以尝试
vimdiff
: