文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python re删除匹配行

2023-01-31 05:43

关注
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文件内容
$TTL 600 ; 1 day
@               IN SOA  ns1.xxxx.com. root.xxxx.com.(
                        1002766  ; Serial
                        3600            ; Refresh (1 hour)
                        900             ; Retry (15 minutes)
                        3600000         ; Expire (5 weeks 6 days 16 hours)
                        3600            ; Minimum (1 hour)
                        )
@       2D      IN      NS      ns1.xxxx.com.
@       2D      IN      NS      ns2.xxxx.com.
$ORIGIN xxxx.com.
;;
                           IN MX 5  mxbiz1.qq.com.
                           IN MX 10 mxbiz2.qq.com.
                           IN TXT   "v=spf1 include:spf.mail.qq.com ~all"
auth                       IN MX 5  mail.pub.jumei.com.
auth                       IN TXT   "v=spf1 ip4:x.x.x.x/24 ip4:x.x.x.x/24 ~all"
stk                        IN CNAME office.reemake.net.
signontest                 IN CNAME xxx.xxxx.com.
qqmaile33f7f2c             IN CNAME mail.qq.com.
*.kbs                      IN A     192.168.20.222
flow  IN  A  192.168.49.10
maven  IN  A  192.168.49.9
auth     IN      A       192.168.49.11
auth     IN      A       192.168.49.12
lynx-auth      IN      A   192.168.49.13
lynx-auth      IN      A   192.168.49.14



vim dns.py
#!/usr/bin/env python
import sys
import re
import os

if __name__ == '__main__':
    content = []
    with open('xxx.com','r') as f:
        with open('xxx.com.bak', 'w') as g:
            #读取原文件行
            for content in f.readlines():
                #把执行脚本的第一个参数赋予变量x
                x = 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文件
                if not p.match(content):
                        g.write(content)
        #移动bak文件覆盖原来的老文件
        os.rename('xxx.com.bak','xxx.com')
	    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.py auth 192.168.6.69 192.168.6.80
# diff xxx.com xxxx.com.bak
636,637d635
< auth 	 IN 	 A 	 x.x.x.x
< auth 	 IN 	 A 	 x.x.x.x
801a800,801
> auth	IN	A	192.168.6.69
> auth	IN	A	192.168.6.80
# cat test 
wms.web
wms.rf
wms.worker
report.web
report.worker
admin
invoice.web.center
invoice.worker.center
invoice.web.cd
invoice.worker.cd
jlsext
jls
jlsworker
uds
udsworker
separate
# for i in `cat test`;do ./dns.py $i 10.1.27.49 10.1.27.51;done


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯