【问题标题】:notepad++ check for duplicate lines complexnotepad++ 检查重复行复杂
【发布时间】:2014-02-03 13:22:23
【问题描述】:

例子

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 非常强大,只是没有办法做这样的事情......

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

[区块1] 指导:??? 更多信息: ??? [/block1]

这就是每个块的格式..

【问题讨论】:

    标签: notepad++


    【解决方案1】:

    虽然我的回答现在帮不了你... 将您的行复制到 2 个新闻选项卡中,然后使用 TextFX 复制排序选项卡 1 和唯一排序选项卡 2。 然后将 tab 2 移动到其他视图,最后使用 Compare。

    【讨论】:

    • 谢谢。当您说“最终使用比较”时,您的意思是在 Notepad++ 中进行比较吗?如果有,在哪里?
    【解决方案2】:

    使用 TextFx 对输入行进行排序并保留重复项。接下来进行正则表达式搜索,在 Mark 选项卡中设置 Bookmark Line。搜索文本应为^(GUID:\s*\d+\r\n)\1,然后单击全部标记**。接下来使用 Menu => Search => Bookmark => 删除未标记的行 删除除重复项之外的所有内容,或使用 Menu => 搜索 => 书签 => 复制书签行并将行粘贴到需要的位置。如果有四个或更多相同的行,那么上面可能会以每对一个条目结束,另一个 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 等命令应根据可用的命令和选项而起作用。

    【讨论】:

    • 不幸的是要复杂得多... [UNIT] GUID: 唯一需要 dup 检查的东西... 名称:?? 文件:??? 单位类型:??? 未知:?? [/单位]
    • @user2455808 那么您的实际问题是什么?如果它更复杂,那么显示一些实际数据和所需的输出。解释清楚哪些位需要检查,哪些位可以忽略。
    • 没关系,我一直在编写程序......你可能是对的,并且知道如何做我需要的,但我根本不熟悉基于 Linux 的命令 :(...
    猜你喜欢
    • 2021-05-26
    • 2020-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多