python用正则表达式处理MAC格式不规范的问题

正则表达式处理交换机MAC地址表不规范的问题。在现实网络中,因交换机的产品不一,且同厂商的产品型号不同。命令输出的格式规范也不同。象早期的6509,CATOS命令格式。在CAM表的输出时,类似这样:

205   00-00-0c-07-ac-cd             3/3 [ALL]
47    00-50-56-8c-31-b0             3/2 [ALL]
13    78-e7-d1-df-d5-7e             5/32 [ALL]
100   00-00-0c-07-ac-64             3/3 [ALL]
29    e0-50-8b-bf-64-12             6/20 [ALL]
7     00-0f-1f-64-3b-6e             3/7 [ALL]
29    94-e1-ac-ec-c9-6e             6/20 [ALL]

而流行的MAC地址格式是0000.0c07.accd,大多交换机多是这种格式。

下面就用python正则表达式来处理这方面的问题。

#coding:utf-8
import re
patt='(\w\w-){5}\w\w\s+(\d/\d\d)'     #先是搜索文档中有MAC地址的行,patt匹配模式

 


file6509=open(u'6509二枢楼','r')
for line in file6509:
    
    maclist=re.search(patt,line)  #先是搜索文档中有MAC地址的行
    if maclist:  #如果找到,则以下进行替换
        maclist2=re.sub('-','',maclist.group())  #把“-”消除掉
        maclist3=re.sub('(\w{4})(\w{4})',r'\1.\2.',maclist2)   #每4个字符之间加一个'.' ,使之符合标准的MAC格式
         
        print maclist3

 

运行后,格式为:

 

 

e050.8bbf.6415             6/20
e050.8bbf.6414             6/20
b897.5a67.6703             6/20
3c97.0e71.b257             5/46
e050.8bbf.6417             6/20
50e5.49c3.4ea7             6/20
0011.43ed.5c2a             5/20
e050.8bbf.6416             6/20
e050.8bbf.6419             6/20
0018.b198.c100             6/47
001f.9e2b.b8cc             6/42
c03f.d507.72df             6/20
e050.8bbf.6418             6/20
988b.0a85.e7a8             6/20
e050.8bbf.641b             6/20
e050.8bbf.641a             6/20
fcaa.1403.433b             6/20
e050.8bbf.641d             6/20
0022.0c76.b241             5/46
e050.8bbf.641c             6/20
e050.8bbf.641f             6/20
fcaa.1498.b492             5/46
e050.8bbf.641e             6/20
70f3.5a01.8bc0             6/20
fc15.b4fc.f494             5/46
4ccc.6ac1.d9fc             6/20
d43d.7ea8.c6d4             5/46
90fb.a618.feba             6/20
000e.a38d.b127             6/20
6c0b.84ac.eda6             5/46
902b.340b.baae             5/46
a0cf.5b05.dac1             5/46
00e0.4c36.1978             5/46
6c3b.e517.e3f5             6/20
001d.090c.23fb             5/46
001e.0bd9.0ba6             6/47
78e7.d15a.1604             6/47
0008.30ad.ddc1             6/20
78e7.d1df.dea8             6/41
90fb.a61b.0e4d             5/46
98ee.cb06.ac68             5/46
a414.375b.8fdd             6/20
c85b.7655.8e79             5/46
782b.cb07.2f13             6/16
a414.375b.8fdf             6/20
448a.5b4f.55ae             6/20
1060.4b86.b361             5/46
448a.5b52.a80b             5/46
6c3b.e517.e258             6/20
00e0.7052.913b             5/46
782b.cb07.2f1b             6/16
4437.e650.eeec             6/20
001f.9dab.b9c1             5/46
e050.8bbf.6422             6/20
e050.8bbf.6423             6/20
e050.8bbf.6420             6/20
902b.34c4.c512             6/20
e050.8bbf.6421             6/20
e050.8b41.6ee9             6/20
94e1.acec.c996             6/20
e050.8bbf.6426             6/20
e050.8bbf.6427             6/20
e050.8bbf.6424             6/20
000e.a301.3d46             6/20
90fb.a619.2d69             6/20
e050.8bbf.6425             6/20
b8ae.eddd.df20             6/20
74d4.3557.9a83             5/46
b8ae.eddd.de3c             6/2

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值