正则表达式模式匹配巨大文件中的IP和用户代理

时间:2009-02-11 12:14:09

标签: regex

我有一个巨大的日志文件,其结构如下:

ip=X.X.X.X
userAgent=Firefox
-----
Referer=hxxp://www.bla.org

我想创建一个这样的自定义输出: IP:的userAgent

代表:

X.X.X.X:Firefox

并且模式将忽略不以ip =和userAgent =开头的行。 (这两个必须形成一对,如上所述。)

我是新手管理员,我们的客户需要立即排序。 任何帮助都会很精彩。 感谢。

3 个答案:

答案 0 :(得分:3)

^ip=(\d+(?:\.\d+){3})[\r\n]+userAgent=(.+)$

以全球+多线模式申请。

组1将包含IP,组2将包含用户代理字符串。

编辑:上面的表达式可以简化一下,我们可以删除IP地址格式检查 - 假设日志文件中只有真实的IP地址:

^ip=(\d+\.?)+[\r\n]+userAgent=(.+)$

答案 1 :(得分:0)

您可以使用:

^ip=((?:[0-9]{1,3}\.){3}[0-9]{1,3})$

^userAgent=(.*)$ 

获取两者的组1,您将获得所需的数据。

答案 2 :(得分:0)

试一试(如果您的日志文件与上面的示例代码段不同,这绝不是强大的):

sed -n -e '/^ip=/ {s///
N
s/\nuserAgent=/:/
p 
}' HugeFile > customoutput