我有一个巨大的日志文件,其结构如下:
ip=X.X.X.X
userAgent=Firefox
-----
Referer=hxxp://www.bla.org
我想创建一个这样的自定义输出: IP:的userAgent
代表:
X.X.X.X:Firefox
并且模式将忽略不以ip =和userAgent =开头的行。 (这两个必须形成一对,如上所述。)
我是新手管理员,我们的客户需要立即排序。 任何帮助都会很精彩。 感谢。
答案 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