python re删除匹配行

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 int.jumei.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

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)
	    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
时间: 2024-12-12 21:11:52

python re删除匹配行的相关文章

sed 使用 删除匹配行

“p” command prints the buffer (remember to use -n option with “p”) “d” command is just opposite, its for deletion. ‘d’ will delete the pattern space buffer and immediately starts the next cycle. Syntax: # sed 'ADDRESS'd filename # sed /PATTERN/d file

删除匹配行之后或者之前的数据

匹配到包含abc的行,然后将abc行及之后的数据删除 sed '/abc/,$d' file 匹配到包含abc的行,然后将abc行之前的数据删除(取巧的办法,希望有大帮解决) sed -n '/abc/,$p' file > new_file

拾遗:Vim 批量删除匹配到的行

删除包含特定字符的行 g/pattern/d (全局删除匹配行) 1,5g/pattern/d (删除第1-5行里的匹配行) 删除不包含指定字符的行 v/pattern/d g!/pattern/d (全部删除) ...

vim技巧4 删除/保留文本中匹配行

vim技巧:如何删除/保留文本中特定的行呢? <ol><a href="/ss/ss/www"> show invisibles</a> <a href="/ss/ssg/gg/ff/"> one world one dream</a> 任务1:只保留<a>标签内的标题,而把其他行都删掉:g/re/d 知识点:使用:global与:delete命令 运行一下命令: /\v\<\ /?\w+

sed删除文本第一个匹配行

源文本如下,要求删除第一个为happy-123456的行. ----------------------------- aaaaaaa happy-123456 bbbbbb asdasawe happy-123456 dsafsdfsd sagasdfasd happy-123456 ------------------------------ 目标文本: ----------------------------- aaaaaaa bbbbbb asdasawe happy-123456 ds

Linux sed正则匹配删除整行

原文内容: [[email protected] tmp]# more test.log 2019-12-01 09:09:02 Failed 2019-12-01 09:12:02 Failed 2019-12-01 09:15:03 Failed 2019-12-01 09:18:02 Failed 正则匹配Failed,删除整行(直接替换文本内容) [[email protected] tmp] sed -i '/Failed$/'d check.log 原文地址:https://www.

sed系列:行或者模式匹配删除特定行

“p” command prints the buffer (remember to use -n option with “p”) “d” command is just opposite, its for deletion. ‘d’ will delete the pattern space buffer and immediately starts the next cycle. Syntax: # sed 'ADDRESS'd filename # sed /PATTERN/d file

Linux之sed:删除某行以及替换

sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为:         sed [-nefri] 'command' 输入文本 常用选项:        -n∶使用安静(silent)模式.在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上.但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来.        -e∶直接在

sed 删除最后几行 和删除指定行 awk使用

sed 删除最后几行 和删除指定行 转载原文链接:http://blog.51cto.com/lspgyy/1305489 sed 想删除文件中的指定行,是可以用行号指定也可以用RE来匹配的. 删除指定的行[可以指定行号删除.匹配字符串来删除] [[email protected] ~]# cat -n seq.txt 1 ok i will help you 2 understand sed usage 3 how to use it 4 and we should use it in vie