Python使用正则为配置文件不同条目后的IP追加对应子网掩码方法
实现思路
- 用正则同时捕获每行的配置类型(
network/host)和对应的IP地址,避免单独匹配IP漏了类型判断 - 先一次性读取所有文件内容到内存,处理完成后再统一写入文件,避免读写同个文件时内容被覆盖
- 针对不同配置类型拼接对应子网掩码,未匹配到规则的行直接保留原样输出(兼容空行、注释等异常行)
修正后的完整代码
import re # 定义掩码映射规则 mask_map = { "network": "255.255.255.0", "host": "255.255.255.255" } # 匹配规则:行开头为network/host,后跟IP地址 pattern = re.compile(r'^(network|host)\s+(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})') # 先读取所有行 with open("test.txt", "r", encoding="utf-8") as f: lines = f.readlines() processed_lines = [] for line in lines: line = line.rstrip('\n') # 先去掉末尾换行符,处理完统一加 match = pattern.match(line) if match: config_type, ip = match.groups() # 拼接掩码和换行 processed_line = f"{config_type} {ip} {mask_map[config_type]}\n" processed_lines.append(processed_line) else: # 不匹配的行原样保留,加回换行 processed_lines.append(line + '\n') # 写回文件(如果怕覆盖原文件可以先写入新文件比如test_new.txt,确认没问题再替换) with open("test.txt", "w", encoding="utf-8") as f: f.writelines(processed_lines)
代码说明
- 正则用
^限定匹配行开头,避免配置内容里中间出现network/host字符导致误匹配 - 提前定义掩码映射字典,后续如果要修改掩码规则直接改字典即可,不用改逻辑
- 如果你担心直接覆盖原文件出问题,可以把最终写入的文件名改成
test_output.txt,验证输出正确后再替换原文件
内容的提问来源于stack exchange,提问作者point
相关产品推荐
相关产品推荐

