簡體   English   中英

在文件中查找和替換字符串(mac地址)無法正常工作

[英]Finding and replacing string (mac address) in a file is not working

我的文件除其他信息外還包含MAC,每次嘗試替換MAC時,我都試圖對其進行替換。 該文件包含類似

Dec  3 06:44:02 2013 192.168.5.21 [245]: <1234> <NOTI> |machine1@192.168.5.21|
request: 55:aa:cc:77:dd:bb: machine 192.168.5.21-00:11:ee:20:66:22-device-name-5

我已經寫了這段代碼,但是沒有用

import re

with open("/home/user/infile.txt", "r+") as fin:
        for line in fin:
            mac=re.search(r'([0-9A-F]{2}[:-]){5}([0-9A-F]{2})',line, re.I).group()
            for col in mac:
                mac_h = mac.replace(":",'')
            mac_hex = "0x" + mac_h
            mac_int= int(mac_hex, 16)
            new_mac = mac_int+12345
            new_mac= hex(new_mac)
            line= line.replace(mac, new_mac)
fin.close()

所以我要搜索mac,這里有兩個問題,首先,它只找到該行中第一個出現的mac。 其次,當我僅在第二次出現時嘗試代碼時,它得到了21-00:11:ee:20:66:22而不是00:11:ee:20:66:22

然后我在做一些算術(這部分工作),但是當我嘗試用新值替換舊值時。 它沒有用,我檢查了文件,沒有任何東西可以替換。 我不知道為什么,所以可以幫助我嗎?

更新

我更改了代碼,現在將更改寫入文件

import re

with open("/home/user/infile.txt", "r+") as fin:
    with open("/home/user/infile.txt", "w+") as f_out:
        for line in fin:
            mac=re.search(r'([0-9A-F]{2}[:]){5}([0-9A-F]{2})',line, re.I).group()
            for col in mac:
                mac_h = mac.replace(":",'')
            mac_hex = "0x" + mac_h
            mac_int= int(mac_hex, 16)
            new_mac = mac_int+12345
            new_mac= hex(new_mac)
            line= line.replace(mac, new_mac)
            f_out.write(line)

現在剩下的問題是它只找到第一個mac出現55:aa:cc:77:dd:bb:並移動到下一行而不匹配第二個00:11:ee:20:66:22 ,所以有沒有辦法讓它找到第一個比賽后繼續搜索? 謝謝

從您的正則表達式中刪除連字符。 MAC地址組件通常用冒號分隔。

/([\dA-F]{2}:){5}([\dA-F]{2})/i

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM