【问题标题】:Removing Duplicate lines with random text behind it删除后面带有随机文本的重复行
【发布时间】:2013-07-09 14:56:48
【问题描述】:

我在记事本++中有这样的文字

Random Text Here:188.0.0.0
Random Text Here:188.0.3.0
Random Text Here:188.2.0.0

但是,最后的一些数字是重复的,我想去掉它们。例如:

Random Text Here:188.0.3.0
Random Different Text Here:188.0.3.0

既然有成千上万条这样的线,我该如何在群众中这样做?

【问题讨论】:

  • 呃,你想保留 second 行吗?为什么不是第一个或最后一个?此外,在您的示例中,不是数字重复,而是文本 before 数字(IP 地址?)是重复的。你能澄清一下吗?
  • 您不能只删除重复的数字 - 在我看来,分隔符 (:) 之前的文本和它之后的文本创建一个标识条目的键。仅当整行与现有行重复时(不考虑可能的时间戳,我会考虑删除它们。
  • 对不起,应该解释得更好。重复的是 IP,而不是 IP 之前的文本。我想摆脱重复的 IP,但随机文本妨碍了我这样做。我想要这个:此处的随机文本:188.0.3.0 此处的随机不同文本:188.0.3.0 留下:此处的随机文本:188.0.3.0 因为第二个是相同的 IP。
  • 您的问题得到解答了吗?如果是这样,请接受答案。如果没有,还需要什么?

标签: notepad++


【解决方案1】:

在 Notepad++ 中,我会尝试以下多步骤过程。

(1)使用正则表达式将所有行将IP地址和固定文本从Random Text Here:188.0.0.0更改为:188.0.0.0!!!Random Text Here

(2) 使用TextFx对文件进行排序去除重复。

(3) 使用正则表达式查找和删除重复项。这可能需要多次传递。

(4) 使用正则表达式将文本放回正确的顺序。

(5)(可选)再次对文件进行排序。

上述方法的问题:

(a) 首先为 IP 地址排序的“随机文本”将被保留,而不是原始文件中的第一个。

(b) 根据是否使用第 (5) 步,结果将按 IP 地址或随机文本排序。

更详细的:

(0) 选择输入文件中没有出现的字符或短字符串。我将使用!!

(1) 对文件执行正则表达式替换(选中点 匹配换行符)将^(.*)(:\d+\.\d+\.\d+\.\d+)$ 更改为$2!!$1

(2) 使用 TextFx 对文件进行排序。指定唯一排序可能有助于减少行数。

(3) 对文件执行正则表达式替换(选中点 匹配换行符)将^(:\d+\.\d+\.\d+\.\d+)!!(.*)\r\n\1.*$ 更改为$1!!$2。当有几行具有相同的 IP 地址时,这将删除大约一半的行。多次运行相同的替换,直到它报告没有进行任何更改。您可能需要根据文件中的行尾更改 \r\n 部分

(4) 对文件进行正则表达式替换(选中点匹配换行符)以将^(:\d+\.\d+\.\d+\.\d+)!!(.*)$ 更改为$2$1

(5)(可选)再次对文件进行排序。

【讨论】:

    猜你喜欢
    • 2018-01-29
    • 2022-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    相关资源
    最近更新 更多