如何使用notepad ++或其他工具删除重复的块?

时间:2013-05-28 22:09:19

标签: regex notepad++ duplicate-removal

如何从文件中删除重复项。不是简单的线条,而是块。

我有一个像这样的大清单:

define service {
    param1                                          ABC
    param2                                          XYZ
    param3                                          123456
}

define service {
    param1                                          KBW
    param2                                          XYZ
    param3                                          100100
}

define service {
    param1                                          PYJ
    param2                                          XYZ
    param3                                          99842
}

define service {
    param1                                          ABC
    param2                                          XYZ
    param3                                          123456
}

define service {
    param1                                          KBW
    param2                                          XYZ
    param3                                          100100
}

我需要删除重复的条目,在本例中,使用param1 = ABC和param2 = KBW的块。我知道如何删除线条,但是我不知道这样做。

2 个答案:

答案 0 :(得分:1)

你可以这样做:

find: (define service \{.*?\})(.*?)\1
replace: $1$2

但你必须按下replaceAll按钮,直到没有更多的匹配。

答案 1 :(得分:0)

使用Notepad++进行测试。打开文件后,按CTRL+H打开Replace对话框。

Find what:输入ABC

的以下正则表达式
define service \{\s+param1\s+ABC[^}]+\}

Replace with:将保持为空,因为我们要删除我们的选择。选择Regular expression单选按钮和Matches newline复选框。

然后第一次点击Find Next。再次点击跳过这个。从那里只需点击Replace即可替换重复项。 不要点击Replace All,因为它也会替换第一次出现。现在,对KBW

重复相同的过程
define service \{\s+param1\s+KBW[^}]+\}