python re删除匹配行,,re.compile


re.compile(strPattern[,flag]):这个方法是Pattern类的工厂方法,用于将字符串形式的正则表达式编译为Pattern对象。第二个参数flag是匹配模式,取值可以使用按位或运算符‘|‘表示同时生效,比如re.I|re.M。另外,你也可以在regex字符串中指定模式,比如re.compile(‘pattern‘,re.I|re.M)与re.compile(‘(?im)pattern‘)是等价的。


xxx.com文件内容$TTL600;1day@INSOAns1.xxxx.com.root.xxxx.com.(1002766;Serial3600;Refresh(1hour)900;Retry(15minutes)3600000;Expire(5weeks6days16hours)3600;Minimum(1hour))@2DINNSns1.xxxx.com.@2DINNSns2.xxxx.com.$ORIGINint.jumei.com.;;INMX5mxbiz1.qq.com.INMX10mxbiz2.qq.com.INTXT"v=spf1include:spf.mail.qq.com~all"authINMX5mail.pub.jumei.com.authINTXT"v=spf1ip4:x.x.x.x/24ip4:x.x.x.x/24~all"stkINCNAMEoffice.reemake.net.signontestINCNAMExxx.xxxx.com.qqmaile33f7f2cINCNAMEmail.qq.com.*.kbsINA192.168.20.222flowINA192.168.49.10mavenINA192.168.49.9authINA192.168.49.11authINA192.168.49.12lynx-authINA192.168.49.13lynx-authINA192.168.49.14



vimdns.py
#!/usr/bin/envpythonimportsysimportreif__name__==‘__main__‘:content=[]withopen(‘xxx.com‘,‘r‘)asf:withopen(‘xxx.com.bak‘,‘w‘)asg:#读取原文件行forcontentinf.readlines():#把执行脚本的第一个参数赋予变量xx=sys.argv[1].strip()#匹配拼接以x变量+多空格IN多空格A开头的行#其中r‘‘是对引号中的字符串,保留字面,不进行转义p=re.compile(r‘^‘+x+r‘\s.+IN\s.+A‘)#p=re.compile(r‘^‘+x+r‘\w*\s.+IN\s.+A‘)#最后使用Match实例获得信息,如果不匹配re条件,写把行写到bak文件ifnotp.match(content):g.write(content)o=sys.argv[1].strip()v=sys.argv[2].strip()q=sys.argv[3].strip()g.write("%s\tIN\tA\t%s\n"%(o,v))g.write("%s\tIN\tA\t%s\n"%(o,q))
#./dns.pyauth192.168.6.69192.168.6.80#diffxxx.comxxxx.com.bak636,637d635<authINAx.x.x.x<authINAx.x.x.x801a800,801>authINA192.168.6.69>authINA192.168.6.80


本文出自 “xieping_linux” 博客,请务必保留此出处http://xieping.blog.51cto.com/3715452/1899918

python re删除匹配行

评论关闭