[英]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.