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