Notepad++ 检查重复行复杂问题

7

示例

有40000多行,其中包含像这样的GUID:

GUID: 0981723409871243

搜索所有GUID以查找重复项

示例:

GUID: 124432408213
GUID: 08917234071423
GUID: 0189742381
GUID: 08917234071423
GUID: 0817423423
GUID: 124432408213

我有TextFX和Compare,但是如何找到这个部分,其中有2个124432408213和2个08917234071423

在可能有重复的40,000行中,我无法轻松地检测它们,我需要一种查找重复项的方法。

它应该类似于GUID:“搜索GUID后面的文本”,然后继续搜索每个GUID...我可以编写一个自定义程序来完成这个任务,但是...我试图避免这样做。TextFX非常强大,只是没有看到这样做的方法...

我应该在这里添加更多信息的例子:

[block1] guid: ???? more info: ??? [/block1]

每个块都是这样格式化的。

2个回答

13

虽然我现在的回答无法对您有所帮助... 将您的行复制到2个新标签中,然后使用TextFX来对标签1进行重复排序并对标签2进行唯一排序。 然后将标签2移动到其他视图,最后使用比较工具。


谢谢。当你说“最后使用Compare”时,你是指在Notepad++中比较吗?如果是的话,它在哪里? - RockPaperLz- Mask it or Casket

3

使用TextFx对输入行进行排序并保留重复项。接下来进行正则表达式搜索,在标记选项卡中设置书签行。 搜索文本应为^(GUID:\s*\d+\r\n)\1,然后单击全部标记。接下来使用菜单 => 搜索 => 书签 => 删除未标记的行来删除除重复项以外的所有内容,或者使用菜单 => 搜索 => 书签 => 复制标记行并将这些行粘贴到所需位置。如果有四个或更多相同的行,则上述方法可能会以每一对条目结束,另一个TextFX排序去除重复项应该可以去除多余的。

对于[block1] guid: ???? more info: ??? [/block1]情况,正则表达式更加复杂,但^(\[block1\] guid:\s*\d+ more info:\s*\d+ \[/block1\]\r\n)\1可以在以下内容中找到和标记重复项:

[block1] guid: 1234 more info: 5678 [/block1]
[block1] guid: 1235 more info: 5678 [/block1]
[block1] guid: 1235 more info: 5678 [/block1]
[block1] guid: 1236 more info: 5678 [/block1]
[block1] guid: 1236 more info: 5678 [/block1]

在Linux或类似系统上,以下命令之一应该可以工作:sort -c inputFileName | grep -v "^\s*1\s"sort inputFileName | unic -c | grep -v "^\s*1\s"sort inputFileName | uniq -d,具体取决于哪些命令和选项是可用的。请注意保留HTML标记。

很不幸,这个东西变得更加复杂了... [单元] GUID:唯一需要重复检查的事情... 名称:?? 文件:??? 单元类型:??? 未知:?? [/单元] - user2455808
@user2455808,那你实际的问题是什么?如果它比较复杂,请展示一些实际数据和所需输出。清楚地解释需要检查哪些位以及可以忽略哪些位。 - AdrianHHH
没关系,我一直在写程序...你可能是对的,也知道我需要做什么,但我完全不熟悉基于Linux的命令 :( ... - user2455808

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接