我需要能够搜索日志并获取已记录的IP地址。示例日志行如下所示:
[2012-06-05 11:59:52]公告[14369] chan_sip.c:注册''失败'yy.yy.yy.yyy' - 找不到匹配的同伴
我需要获取yy.yy.yy.yyy
位置中列出的IP地址。对于其他日志文件,yy.yy.yy.yyy
将处于不同的位置。
我正在考虑读取每一行,在' '
上拆分,然后遍历拆分临时数组:'yy.yy.yy.yyy'
。我只是不知道如何使用包含单引号的'yy.yy.yy.yyy'
模式匹配或正则表达式。我怎么能这样做?
答案 0 :(得分:1)
此正则表达式将匹配“
中包含的IP地址'(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})'
迭代perl中的所有匹配项:
while ($subject =~ m/'(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})'/g) {
# matched text = $&
}
匹配的第1组仅包含IP,因此没有'
答案 1 :(得分:0)
while (<>) {
my ($ip) = $line =~ /for '((?:[0-9]+\.){3}[0-9]+)'/
or next;
... do something with $ip ...
}