代码之家  ›  专栏  ›  技术社区  ›  Ilias Karim guru

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

  •  0
  • Ilias Karim guru  · 技术社区  · 8 年前

    我有两个文件,它们是同一件事的不同版本。但是,其中一个有不同的十六进制值,内存地址。

    是否有一个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 回复  |  直到 8 年前
        1
  •  4
  •   larsks    8 年前

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