Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python检查文件中的IP地址?_Python_Regex - Fatal编程技术网

如何使用Python检查文件中的IP地址?

如何使用Python检查文件中的IP地址?,python,regex,Python,Regex,我有一个日志文件,其中包含一些Whois条目以及我想要检查的相对IP地址: 81.190.123.123中的81.190.xxx.xxx 有没有一种方法可以在不修改其余内容的情况下进行这种转换并重写文件内容 谢谢你的帮助 如果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 或者Per

我有一个日志文件,其中包含一些Whois条目以及我想要检查的相对IP地址:
81.190.123.123
中的
81.190.xxx.xxx

有没有一种方法可以在不修改其余内容的情况下进行这种转换并重写文件内容


谢谢你的帮助

如果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

但是它没有“inline”标志
-i

如上所述,您可以使用
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,那么可以使用fileinput模块逐行处理一个或多个文件

import fileinput
for line in fileinput.input(["filename"], inplace=1, backup='.bak'):
    print processed(line)
fileinput.close()
inplace=1的fileinput将重命名输入文件并从重命名的文件中读取,同时将stdout定向到同名的新文件。可以使用backup参数来防止自动删除临时文件


如果输入很重要,则需要小心处理异常,以防止在出现错误时丢失输入。

必须使用Python吗?这听起来更像是sed的工作:例如
sed-E-E的/([0-9]+\[0-9]+\[0-9]+\[0-9]+\[0-9]+/\1.xxx.xxx/g'
,这也太棒了!令人惊叹的。非常感谢。Perl确实提供了一个
-i
标志。如果你能想到它,Perl就有了。我早该知道,这些解决方案很有效。唯一的一点是,在同一行中,我有另一个字符串,如192.168.xxx.xxx |。。。这种替换会弄乱空间缩进。sed还有其他方法可以用“\t”替换多个空格字符(不是单个空格字符,比如“”)吗?@Julio:当然,只需将其添加到正则表达式和替换文本中即可。