如何在Notepad++中统计并高亮两文件的重复IP:PORT组合?
嘿,这个需求我熟!正好可以用Python写个小脚本一次性搞定统计次数和高亮匹配项两个需求,给你整一套直接能用的方案👇
解决方案:Python实现统计与高亮
1. 先对齐文件格式
先确认下我理解的文件结构没错哈:
- 文件1示例:
user:pass|123.123.123.123:4444| user:pass|456.456.456.456:8080| user:pass|123.123.123.123:4444| - 文件2示例:
123.123.123.123:4444 456.456.456.456:8080
2. 完整可运行脚本
这个脚本会自动完成:读取文件2的目标IP列表→统计每个IP在文件1的出现次数→生成高亮后的文件1副本(终端里能看到彩色高亮,或者改成Markdown加粗格式)
import re from collections import defaultdict # 这里改成你自己的文件路径! FILE1_PATH = "file1.txt" FILE2_PATH = "file2.txt" OUTPUT_HIGHLIGHTED_PATH = "file1_highlighted.txt" def main(): # 第一步:读取文件2的目标IP:PORT,去重并过滤空行 with open(FILE2_PATH, 'r', encoding='utf-8') as f2: target_list = [item.strip() for item in f2.read().split() if item.strip()] if not target_list: print("⚠️ 文件2里没找到有效的IP:PORT组合,请检查内容!") return # 第二步:统计次数+处理高亮 count_result = defaultdict(int) # 两种高亮模式可选:选一种就行 # 模式1:终端彩色高亮(红色) HIGHLIGHT = '\033[91m' RESET = '\033[0m' # 模式2:Markdown加粗高亮(适合用Markdown编辑器打开) # HIGHLIGHT = '**' # RESET = '**' with open(FILE1_PATH, 'r', encoding='utf-8') as f1: content = f1.read() for target in target_list: # 用正则转义避免特殊字符干扰,精准匹配整个IP:PORT matches = re.findall(re.escape(target), content) count_result[target] = len(matches) # 替换成高亮内容 content = content.replace(target, f"{HIGHLIGHT}{target}{RESET}") # 第三步:打印统计结果 print("=== 📊 IP:PORT 出现次数统计 ===") for ip_port, count in count_result.items(): print(f"{ip_port}: {count} 次") # 第四步:保存高亮后的文件 with open(OUTPUT_HIGHLIGHTED_PATH, 'w', encoding='utf-8') as f_out: f_out.write(content) print(f"\n✅ 高亮后的文件已保存到:{OUTPUT_HIGHLIGHTED_PATH}") if __name__ == "__main__": main()
3. 使用步骤
- 把脚本里的
FILE1_PATH、FILE2_PATH改成你实际的文件路径 - 运行脚本:打开终端,输入
python3 count_and_highlight.py(Windows用python count_and_highlight.py) - 终端会直接显示统计结果,同时生成高亮后的文件
4. 小提示
- 如果文件1里的分隔符不是空格,比如是换行或者其他符号,不用担心,脚本是全局匹配,不影响统计和高亮
- 要是不需要终端彩色,就把脚本里的模式2注释打开,模式1注释掉,生成的文件用Markdown编辑器打开就能看到加粗的高亮项
内容的提问来源于stack exchange,提问作者k0ngoz
相关产品推荐
相关产品推荐

