【发布时间】:2017-10-15 00:35:22
【问题描述】:
从列表中,如何保留所有出现的那些行,仅在其他行中出现“第一部分或开头”(从行首到 ^ 字符定义) ? (列表中的线条模式:beginning-of-line^rest_of_line_012345)
^后面的字符类型、长度等无关(但需要保留)。每行只有一 (1) 个 ^ 字符。确定身份的“开始”字符串必须出现在其他行中的相同(类似)位置(即,从行首到^,并且必须完全匹配)。 (行中包含对正则表达式有影响的字符,例如\/()*.,因此需要对这些字符进行简要转义。)
例如:原始列表:
abc^123
0xyz^xxx
aaa-123^123
aaa-12^0xyz
0xyz^098
00xyz^098
0xyz^x111xx
保留所有出现的第一部分相同的行:
0xyz^xxx
0xyz^098
0xyz^x111xx
@Lars Fischer((.*)\R(\2\R?)+)*\K.*(预排序后)编写的这个优雅的脚本保留了所有出现的重复行,但它考虑了整行(它被设计为这样做)。 p>
在这个 Q 中,我正在寻找一种解决方案,它只考虑行的“开头”以查看它是否出现多次,如果是,则保留整行。有什么指导吗?
【问题讨论】:
-
在您的问题中只有一种模式。是否还询问是否存在多种模式?请使用更多示例数据进行说明。
-
重新“模式”。在我的例子中,每行总是有一个 (1) 单个唯一字符 (
^) 作为行首和其余行的分隔符。关于 "regex" 方法:这将是最简单的,因为我经常使用 Notepad++。 perl 脚本将是我也可以接受的解决方案。
标签: list sorting duplicates notepad++