是否有压缩的并排差异格式?

是否有压缩的并排差异格式?

我有两个包含数千行的日志文件。预处理后,只有一些行不同。这些剩余的行要么是真正的差异,要么是打乱的行组。

统一的差异让我可以看到详细的差异,但它使肉眼手动比较变得困难。并排差异似乎对于比较更有用,但它也增加了数千条未更改的行。有没有办法获得两全其美的优势?

请注意,这些日志文件是由xscope监视 Xorg 协议数据的程序生成的。我正在寻找可以应用于与上述类似情况的通用工具,而不是专门的网络服务器访问日志分析工具。


两个示例日志文件位于http://lekensteyn.nl/files/qemu-sdl-debug/log13log14)。可以在文件中找到预处理器命令xscope-filter,该命令删除时间戳和其他次要细节。

答案1

我最常使用的 2 个差异工具是融合差异

融合

Meld 是一个 GUI,但在显示文件之间的差异方面做得很好。它更适合软件开发,具有将更改从一侧移动到另一侧以合并更改的功能,但也可以用作直接并排比较工具。

    融合党卫队

    融合代码高亮的SS

差异

我已经使用这个工具很多年了。我通常使用以下开关运行它:

$ sdiff -bBWs file1 file2
  • -b 忽略空白量的变化。
  • -W 忽略所有空白。
  • -B 忽略行全为空白的更改。
  • -s 不输出公共线。

通常,对于日志文件,您需要使列的宽度更宽,您可以使用它-w <num>来使屏幕更宽。

我断断续续使用的其他工具

差异化

差速器是一个Python脚本,它对统一的差异输出进行着色。

$ diffc [OPTION] FILE1 FILE2

             ss 的 diffc

维姆迪夫

维姆迪夫可能与 meld 一样好,甚至更好,并且可以从终端运行。我总是忘记使用它,但对我来说,这是一个很好的指标,表明我发现该工具日常使用有点困难。但是YMMV。

                                    vimdiff 的 ss

答案2

目前我正在使用并排 diff 和 grep 过滤不同的行:

diff -y -W250 log.txt log2.txt | expand | \
    grep -E -C3 '^.{123} [|<>]( |$)' | colordiff | less -rS
  • 选项-W250使输出更宽,以便我可以看到更多数据。
  • expand需要将制表符转换为空格
  • -C3向 grep 输出添加 3 行上下文。
  • ^.{123}匹配并排差异标记之前的一半数据。
  • colordiff使输出更容易理解
  • less -rS允许解释 ANSI 颜色 ( -r) 并防止换行 ( -S)。

这是一个黑客,欢迎替代方案。

答案3

没有人提到ICDIFF然而?这很棒!图片不言而喻: ICDIFF

答案4

linux“sdiff”命令显示并排差异,默认情况下包括所有行,但您可以使用各种选项仅显示差异:

sdiff -tWBs -w $COLUMNS config.xml config.xml.original

在哪里

-t:将制表符转换为空格

-W:忽略空白差异

-B:忽略空行

-s:忽略相同的行

-w $COLUMNS:使用屏幕的全宽

显示的行将被 |、< 或 > 分隔——请参阅文档,或者只是尝试一下。

相关内容