根据记事本++中的搜索删除重复行

时间:2015-04-09 16:44:27

标签: regex notepad++

我有一个文本文件,其中包含数千行文字,如下所示。

  

aaaa“ 测试
  aa“ 测试 ”(版本2)
  bbbb“ 测试 ”(版本4)
  bbbbb“ test1 ”(带头)
  abs“ test1
  absc“ test3

我希望能够根据搜索删除所有重复项并仅保留第一行(在我的情况下,所有行中引号之间的值相同)

编辑:有关我如何检测到某行与另一行重复的更多详细信息: 我检查引号之间的值。在第一行的3行中,引号之间有值“test”,所以我想保留第一行的值并删除其他值。对于第4行和第5行,值为“test1”,因此我只保留第4行并删除另一行。

因此,清理后,我的文本文件将具有此表单

  

aaaa“测试”
  bbbbb“test1”(带头)
  absc“test3”

我尝试在记事本++中使用这种常规搜索

  

(\ “*?”)

但我不知道如何使用它来查找重复项并删除具有相同值的其他行。我已经检查了其他用户的情况,但我找不到解决方案。

1 个答案:

答案 0 :(得分:0)

我会分几步解决它。

  1. 追加行号
  2. 将引用的文字放在前面
  3. 排序,现在具有相同引用文本的行会相互排序,其次是由于步骤1中的行号而在原始序列中
  4. 删除"重复"
  5. 从第2步中删除插入的引用文字
  6. 按步骤1中的行号排序
  7. 从第1步中删除行号
  8. 现在详细说明:

    1. 追加行号:使用修改 - >第一列中的列编辑器两次

      1. 插入文本(文件中未出现的某些分隔符,例如|或:)
      2. 插入数字以1加1开头,使用前导零
      3. 现在每行应以行号和分隔符

        开头
      4. 添加引用文字:使用regexp替换
        查找内容: ^([^"]*)("[^"]+")(.*)$
        替换: \2\1\2\3
        现在你的行应该从文本开始。
      5. 排序:使用编辑 - >线路操作 - >排序......
      6. 删除重复项:并使用正则表达式替换:
        查找内容: ("[^"]+")(.*)\n\1.*
        替换: \1\2 使用全部替换。
      7. 使用正则表达式替换来删除步骤2中的文本 查找内容: ^"[^"]+"
        替换为:没有,即留空
      8. 按原始行号排序:,使用编辑 - >线路操作 - >排序......
      9. 使用正则表达式替换步骤1中的行号:< 查找内容: ^(.*\|)(使用\ |或在步骤1中使用的任何内容作为分隔符)
        替换为:没有,即留空