如何在不忽略十六进制值差异的情况下区分2个文件?

时间:2018-06-30 14:51:20

标签: bash shell diff zsh

我有2个文件,它们是同一事物的不同版本。但是,一个具有与另一个不同的十六进制值,内存地址。

是否可以使用diff命令或过滤器与diff进行比较,以便在忽略不同的十六进制值后输出仅是不同的行?

# diff output I would like to filter: - .. 0x000000010e428bb4 _swift_stdlib_bridgeErrorToNSError + 388", - .. 0x000000010e3f0347 swift_dynamicCast + 2455", - .. 0x000000010e3f051a swift_dynamicCast + 2922", + .. 0x00000001013f2bb4 _swift_stdlib_bridgeErrorToNSError + 388", + .. 0x00000001013ba347 swift_dynamicCast + 2455", + .. 0x00000001013ba51a swift_dynamicCast + 2922",

1 个答案:

答案 0 :(得分:4)

只需使用sed来重写十六进制数字。像这样:

sed 's/0x[0-9a-f]*/HEX/g'

输入如下:

.. 0x000000010e428bb4 _swift_stdlib_bridgeErrorToNSError + 388",

结果:

.. HEX _swift_stdlib_bridgeErrorToNSError + 388",

您可以将其与您的diff语句结合起来,例如(假设bash):

diff <(sed 's/0x[0-9a-f]*/HEX/g' file1) <(sed 's/0x[0-9a-f]*/HEX/g' file2)