我有两个包含数千行的日志文件。预处理后,只有一些行不同。这些剩余的线条要么是真正的差异,要么是经过混洗的线条组。
统一差异让我可以看到详细的差异,但它使人工与眼球比较变得困难。并排差异对于比较似乎更有用,但它也增加了数千条未更改的行。有没有办法兼顾两全其美?
请注意,这些日志文件是由xscope
监视 Xorg 协议数据的程序生成的。我正在寻找可以应用于类似上述情况的通用工具,而不是专门的网络服务器访问日志分析工具。
http://lekensteyn.nl/files/qemu-sdl-debug/(log13
和log14
)提供了两个示例日志文件。可以在xscope-filter
删除时间戳和其他次要细节的文件中找到预处理器命令。
slm*_*slm 45
我最常使用的 2 个 diff 工具是meld和sdiff。
Meld 是一个 GUI,但在显示文件之间的差异方面做得很好。它更适合软件开发,具有将更改从一侧移动到另一侧以合并更改的功能,但也可以用作直接并排比较的工具。
我已经使用这个工具多年了。我通常使用以下开关运行它:
$ sdiff -bBWs file1 file2
Run Code Online (Sandbox Code Playgroud)
-b
忽略空白量的变化。-W
忽略所有空白。-B
忽略所有行都是空白的更改。-s
不要输出公共线。通常对于日志文件,您需要使列的宽度更宽,您可以使用-w <num>
使屏幕更宽。
Diffc是一个 Python 脚本,它为统一的 diff 输出着色。
$ diffc [OPTION] FILE1 FILE2
Run Code Online (Sandbox Code Playgroud)
Vimdiff可能和meld一样好,而且它可以从终端运行。我总是忘记使用它,但对我来说,这是一个很好的指标,表明我发现该工具每天使用起来有点困难。但是YMMV。
Lek*_*eyn 21
目前我正在使用并排 diff 和 grep 过滤不同的行:
diff -y -W250 log.txt log2.txt | expand | \
grep -E -C3 '^.{123} [|<>]( |$)' | colordiff | less -rS
Run Code Online (Sandbox Code Playgroud)
-W250
使输出更宽,以便我可以看到更多数据。expand
需要将制表符转换为空格-C3
向 grep 输出添加 3 行上下文。^.{123}
匹配并排差异标记之前的一半数据。colordiff
使输出更易于遵循less -rS
允许解释 ANSI 颜色 ( -r
) 并防止换行 ( -S
)。这是一个黑客,欢迎替代。
小智 5
linux“sdiff”命令显示并排差异,默认情况下包括所有行,但您可以使用各种选项仅显示差异:
sdiff -tWBs -w $COLUMNS config.xml config.xml.original
在哪里
-t:将制表符转换为空格
-W:忽略空白差异
-B:忽略空行
-s:忽略相同的行
-w $COLUMNS:使用屏幕的全宽
显示的行将被 |、< 或 > 分隔——请参阅文档,或者只是尝试一下。
小智 5
diff -y --suppress-common-lines "$file1" "$file2"
Run Code Online (Sandbox Code Playgroud)
将是第一件事。很简单,diff是Unix常用的工具。
-y
Run Code Online (Sandbox Code Playgroud)
使其并排显示
--suppress-common-lines
Run Code Online (Sandbox Code Playgroud)
过滤掉相同的行
归档时间: |
|
查看次数: |
47611 次 |
最近记录: |