在notepad++中使用Regex忽略括号之间的时间戳来查找重复的行并删除它们



我需要通读大量日志。当编程不正确时,我可以得到数千行重复相同的消息,但使用不同的时间戳。这使我无法删除文件中重复的行,因为括号中的变化。

示例:想象这两行在一天中每10秒左右重复一次,其间隐藏着有用的日志信息。

[27 Jun 2022 09:47:46 UTC-0400]禁用超驰视觉控制Rm在dbId 1, sys# 0和目标本地

[27 Jun 2022 09:47:46 UTC-0400]禁用超驰视觉控制RmSide in dbId 1, sys# 0 (sent LOCAL_BOX)

我想使用64位版本的notepad++,这样TextFX插件将无法工作。

TextViz插件在最新版本中被打破,即使在工作时也需要很多步骤。

notepad++编辑/行操作/删除重复行将无法工作,因为时间戳。

是否有一个regex命令,允许我选择错误消息,同时忽略括号前的时间戳,然后找到并删除所有重复的行?

假设相似行的块相邻,则执行正则表达式replace-all of^([[^[]rn]+])(.*R)([[^[]rn]+]2)+with12将删除一组相邻行的第一行以外的所有行。

解释
^                      Start of line
([[^[]rn]+])     Capture group 1, the timestamp on the first line
(.*R)                 Capture group 2, the rest of the first line, including the end-of-line
(                      Grouping for
[[^[]rn]+]   Timestamp
2                 The duplicated text
)+                     This group can be repeated one or more times

替换文本只是第一行两部分的副本。

如果行通常不组合在一起,那么用123代替^( *[[^[]rn]+])(.*R)(( *[[^[]rn]+].*R)*?)( *[[^[]rn]+]2)+应该可以工作。在原来的替换上增加的额外部分是(( *[[^[]rn]+].*R)*?)。它的外括号捕获与第一行不匹配的零行或多行。此替换将需要重复运行,直到没有进行任何更改。

相关内容

  • 没有找到相关文章