如何在忽略内部十六进制值差异的同时区分 2 个文件?

How can I diff 2 files while ignoring differences in hexadecimal values within?

我有 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",

只需使用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)