从文本文件notepad ++中删除部分重复的行

时间:2016-02-08 16:20:12

标签: regex duplicates notepad++

我有一个巨大的列表,如下面的例子,需要删除1,3,6和8行,因为它们是部分重复的,所以我需要保持最长的行。

COMPAQ PRESARIO A940ES NOTEBOOK PC
COMPAQ PRESARIO A940ES NOTEBOOK PC - KU048EAR
HP PAVILION DV7-1210EA NOTEBOOK PC 
HP PAVILION DV7-1210EA NOTEBOOK PC - NG385EA#ABU
HP PAVILION DV7-1210EA NOTEBOOK PC - NG385EAR
HP PAVILION DV7-1210ED NOTEBOOK PC 
HP PAVILION DV7-1210ED NOTEBOOK PC - NA048EA#ABH
HP PAVILION DV7-1210ED NOTEBOOK PC - NA048EA

我需要的最终结果是:

COMPAQ PRESARIO A940ES NOTEBOOK PC - KU048EAR
HP PAVILION DV7-1210EA NOTEBOOK PC - NG385EA#ABU
HP PAVILION DV7-1210EA NOTEBOOK PC - NG385EAR
HP PAVILION DV7-1210ED NOTEBOOK PC - NA048EA#ABH

1 个答案:

答案 0 :(得分:2)

如果您不需要保留线条的原始序列,您可以尝试这样的事情:

  • 使用编辑 - >对行进行排序线路操作 - >排序行按字典顺序升序
  • 确保最后一行以换行符结尾
  • 现在我们进行查找/替换:
    • 查找内容: ^(.*)\r\n(\1.*?\r\n)
    • 替换为: \2
    • 检查左下角:正则表达式。匹配换行
    • 如果您的线条仅为\n:请使用\n代替查找内容中的两个\r\n
    • 点击替换全部替换,点击经常,直到无需更换任何内容,替换中的状态栏对话框会告诉你。

工作原理:

  1. 排序将重复项按顺序排列,最长的重复项#34;是最后一个!
  2. 查找/替换考虑两行,其中第一行是第二行的一部分,然后用第二行替换两行。 (这意味着,如果你有三个副本:第一个全部替换将保留第二和第三行,你需要另一个全部替换。)