簡體   English   中英

如何審查Python文件中的IP地址?

[英]How to censor IP addresses in a file with Python?

我有一個日志文件,其中包含一些 Whois 條目,這些條目具有我想要審查的相對地址 IP: 81.190.123.123中的81.190.xxx.xxx

有沒有辦法在不修改rest的情況下進行這樣的轉換並重寫文件內容?

感謝您的幫助!

如上所述,您可以使用sed執行此操作:

sed -E -e 's/([0-9]+\.[0-9]+)\.[0-9]+\.[0-9]+/\1.xxx.xxx/g'

這使用正則表達式匹配來查找IP地址,並用xxx替換最后兩個八位字節。 使用-i開關,您可以一次完成所有操作:

sed -i.bak -E -e 's/([0-9]+\.[0-9]+)\.[0-9]+\.[0-9]+/\1.xxx.xxx/g' file.txt

如果Python實際上不是您的要求之一,這也解決了這個問題:

sed -i 's/\([0-9]\{1,3\}\)\.\([0-9]\{1,3\}\)\.[0-9]\{1,3\}\.[0-9]\{1,3\}/\1.\2.xxx.xxx/g' mylogfile.log

或Perl,它可以讓你擺脫大多數丑陋的反斜杠:

perl -i -pe 's/(\d{1,3})\.(\d{1,3})\.\d{1,3}\.\d{1,3}/$1.$2.xxx.xxx/g' mylogfile.log

但是這沒有“內聯”標志-i

如果您確實想使用Python,請使用fileinput模塊逐行處理文件或文件。

import fileinput
for line in fileinput.input(["filename"], inplace=1, backup='.bak'):
    print processed(line)
fileinput.close()

使用inplace = 1的fileinput將重命名輸入文件並從重命名的文件中讀取,同時將stdout指向同名的新文件。 您可以使用backup參數來防止臨時文件被自動刪除。

如果輸入很重要,則需要注意處理異常以防止輸入在發生錯誤時丟失。

import re
ip = "123.456.789.123"
ip = ip[::-1]
ip = re.sub("([0-9]{1,3})", "xxx", ip, count=2)
ip = ip[::-1]

暫無
暫無

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

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