python删除行_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

> authINA192.168.6.69

> authINA192.168.6.80

原文地址:http://xieping.blog.51cto.com/3715452/1899918

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值