我需要通读大量日志。当编程不正确时,我可以得到数千行重复相同的消息,但使用不同的时间戳。这使我无法删除文件中重复的行,因为括号中的变化。
示例:想象这两行在一天中每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)*?)
。它的外括号捕获与第一行不匹配的零行或多行。此替换将需要重复运行,直到没有进行任何更改。