有没有办法告诉 WinMerge 排除日期/时间比较?

有没有办法告诉 WinMerge 排除日期/时间比较?

我有几个日志文件,内容如下:

2022-03-13 21:16:46.367972: I This is a test1

有没有办法告诉 WinMerge 排除日期/时间比较而不使用 RegEx 删除时间戳?

这些日志来自生成日志的程序。我必须找出两个文件中消息之间的差异,忽略时间戳。

答案1

WinMerge 有各种可配置和启用的“PreDiffer”插件 - 在这种情况下,最简单的方法可能是让它忽略两个文件中都存在日期/时间戳的列范围内的值,假设它们被放在两个文件的公共列中。

插件 -> 插件设置 -> ignoreColumns.dll ->不包括在比较中的带有时间戳的列号范围

然后,确保通过选择启用此插件:

插件 -> 预处理 -> ignoreColumns.dll

答案2

显然,使用自定义插件是可以实现的。WinMerge 在 C:\Program Files\WinMerge\MergePlugins 中有几个自定义插件。其中一个插件名为“PrediffLineFilter.sct”,用于在比较之前排除行的某些部分。但出于某种原因,它对我来说不起作用。

于是我转而使用 Beyond Compare。它有一项功能叫做“不重要的文本”。

以下是“操作方法”:

  1. 在文本比较模式下输入“规则”
  2. 添加新的“不重要的文本”
  3. 添加要排除的文本。
    在我的例子中,为了排除日志时间戳,我使用了“\d\d\d\d-\d\d-\d\d\s\d\d:\d\d:\d\d.\d\d\d\d\d\d”
  4. 如果您使用 RegEx,请选中正确的复选框
  5. 如果你只想看到差异,请按“差异”按钮
  6. 如果要从差异中排除“不重要的文本”,请按“次要”按钮

在此处输入图片描述

答案3

您现在可以使用过滤器

你可以像图片中这样设置正则表达式过滤器

  • \[\d{2}:\d{2}:\d{2}\.\d{3}\] 对于日期
  • [11:55:27.519]

过滤器配置:

过滤器配置

相关内容