开发者社区> 技术小甜> 正文

python re删除匹配行

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


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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



1
vim dns.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/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
                = sys.argv[1].strip()
                #匹配拼接以x变量 + 多空格 IN 多空格 A 开头的行 
                #其中 r'' 是对引号中的字符串,保留字面,不进行转义
                = 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')
        = sys.argv[1].strip()
        = sys.argv[2].strip()
        = sys.argv[3].strip()
        g.write("%s\tIN\tA\t%s\n" % (o,v))
        g.write("%s\tIN\tA\t%s\n" % (o,q))
1
2
3
4
5
6
7
8
# ./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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 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
1
# for i in `cat test`;do ./dns.py $i 10.1.27.49 10.1.27.51;done















本文转自谢无赖51CTO博客,原文链接:http://blog.51cto.com/xieping/1899918 ,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Python re 正则表达式 数据匹配提取 基本使用
模式字符串使用特殊的语法来表示一个正则表达式: 字母和数字表示他们自身。一个正则表达式模式中的字母和数字匹配同样的字符串。 多数字母和数字前加一个反斜杠时会拥有不同的含义。 标点符号只有被转义时才匹配自身,否则它们表示特殊的含义。 反斜杠本身需要使用反斜杠转义。 正则表达式通常都包含反斜杠"\\"以及小括号"\(\)",模式元素(如 r'\t',等价于 '\\t')匹配相应的特殊字符。
44 0
python——正则表达式(re模块)
python——正则表达式(re模块)
49 0
python re模块正则表达式详解(2)
python re模块正则表达式详解(2)
37 0
python re模块正则表达式详解(1)
python re模块正则表达式详解(1)
42 0
re库:Python中正则表达式的处理与应用(二)
re库:Python中正则表达式的处理与应用(二)
56 0
re库:Python中正则表达式的处理与应用(一)
re库:Python中正则表达式的处理与应用(一)
60 0
Python基础——re表达式中re.sub()的用法
Python 的 re 模块提供了re.sub用于替换字符串中的匹配项。
25 0
Python 正则匹配:re库的使用
正则表达式是一种描绘字符串的匹配模式,可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。 学会了正则表达式,我们就可以定向查找网页中的某些内容了,快去结合爬虫练练手吧。
71 0
【Python基础篇013】第壹章模块大全之《re模块》
【Python基础篇013】第壹章模块大全之《re模块》
21 0
Python编程:re正则库基本使用
Python编程:re正则库基本使用
33 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
给运维工程师的Python实战课
立即下载
Python 脚本速查手册
立即下载
ACE 区域技术发展峰会:Flink Python Table API入门及实践
立即下载