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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章