Sublime Text 2删除唯一的行

时间:2014-12-24 17:47:50

标签: duplicates sublimetext2 unique sublimetext

我正在寻找与Sublime Text 2 Permute Lines -> Unique相反的东西。我需要能够只显示文件中的重复行(或者,如果可能,在两个不同的文件中)。

我找到了HighlightDuplicates插件,但我不知道如何选择突出显示的文本将其复制到新文件中。

1 个答案:

答案 0 :(得分:2)

您有几个问题全部放在一起,您对每个问题的定义都没有完全定义。

鉴于这些问题,让我们从将一个文件中的重复行添加到另一个文件的挑战开始。

这个简单的Python应该适合你。

     """ Write duplicate lines in one file to a text file. """

    fileToRead = 'read_file.txt'
    fileToWrite = 'write_file.txt'
    dupLineSet = set()

    with open(fileToRead, mode='r') as read_file:
        file_lines = read_file.readlines()
        file_lines_copy = file_lines
        for line in file_lines:
            matches = 0
            for line_copy in reversed(file_lines_copy):
                if line == line_copy:
                    file_lines_copy.remove(line_copy)
                    matches += 1
                if matches > 1:
                    if line.strip() != '':
                        dupLineSet.add(line)


    with open(fileToWrite, mode='w') as write_file:
        for line in dupLineSet:
            write_file.write(line)

    ##############################

注意:

  • 必须read_file.txt替换为您要查找重复项的文件的名称。

  • 如果您愿意,可以将write_file.txt替换为您希望写入重复项的文件名。

试一试,看看你是否喜欢这些结果。 既然你没有定义什么是“重复”意味着我做了一些你可能不喜欢的假设。

无论如何将上述内容放入ST,编辑您需要的位并使用Tools -> Build来运行代码。

查看输出文件并告诉我们它与您想要的不一样。

一旦我们为单个文件提供了一个商定的输出,就可以获得适用于两个文件的版本,这是下一个重大挑战。