如何从proxy.txt文件中移除同子网代理(每个子网仅留1个)
从proxy.txt中移除同子网代理(每个子网保留任意一个)
这里有两种实用的方法来解决你的需求——不管你偏好脚本还是命令行工具,都能快速实现每个子网(IP前三个字段相同)仅保留一个代理的效果:
方法1:Python脚本(可读性强,跨平台)
这个脚本会读取proxy.txt,用字典跟踪已经处理过的子网,只保留每个子网的第一个代理条目,最后将结果写入unique_proxies.txt(建议不要直接覆盖原文件,避免数据丢失):
# 定义输入输出文件路径 input_file = 'proxy.txt' output_file = 'unique_proxies.txt' # 用字典存储已出现的子网(键:前三个IP字段,值:任意) seen_subnets = {} with open(input_file, 'r') as f_in, open(output_file, 'w') as f_out: for line in f_in: line = line.strip() if not line: continue # 分割IP和端口,提取前三个字段作为子网标识 ip_part = line.split(':')[0] subnet = '.'.join(ip_part.split('.')[:3]) # 如果子网未出现过,写入文件并标记为已处理 if subnet not in seen_subnets: seen_subnets[subnet] = True f_out.write(line + '\n') print(f"处理完成!结果已保存到 {output_file}")
运行说明:
- 将脚本保存为
clean_proxies.py - 确保和
proxy.txt在同一目录下 - 运行命令:
python clean_proxies.py
方法2:AWK命令行工具(快速高效,适合Linux/macOS)
如果你习惯用命令行,一行awk命令就能搞定,直接输出结果或者写入文件:
# 直接输出到终端 awk -F'[:.]' '!seen[$1"."$2"."$3]++' proxy.txt # 或者将结果写入新文件 awk -F'[:.]' '!seen[$1"."$2"."$3]++' proxy.txt > unique_proxies.txt
命令解释:
-F'[:.]':将分隔符设置为冒号和点,这样可以直接提取IP的前三个字段($1、$2、$3)!seen[$1"."$2"."$3]++:用数组seen跟踪子网,第一次遇到某个子网时,seen[...]为0,取反后为真,打印该行;之后再遇到同子网的条目,seen[...]已经大于0,取反后为假,不打印。
测试结果
针对你提供的proxy.txt内容:
19.15.15.90:61234
19.15.15.29:28010
19.15.15.80:8998
19.15.15.102:8998
25.25.24.15:8998
25.25.24.80:8998
210.192.38.25:8998
210.192.38.29:8998
两种方法都会输出(每个子网保留第一个出现的代理):
19.15.15.90:61234
25.25.24.15:8998
210.192.38.25:8998
内容的提问来源于stack exchange,提问作者Local Host
相关产品推荐
相关产品推荐

