我有大约30,000个Apache访问日志,其中一些日志列出了多个客户端IP地址。这是Apache记录X转发的报头而不是客户机的IP地址的结果。之所以这样做,是因为我们最近在web服务器前添加了haproxy。
接下来,我们将使用rpaf对Apache只记录一个IP地址,即到haproxy的传入连接的IP地址,因此这将不是一个持续的问题。
这就引出了一个实际的问题:
如何处理具有多个IP地址的现有日志,以只提取我想要的日志。我假设我需要sed或类似的东西,但我更喜欢Windows,所以不能百分之百肯定。
这些规则是:
输入: 10.1.1.1 -- 2010年年1月29日:11:00 .(日志线的其余部分)
产出: 10.1.1.1 -- 2010年年1月29日:11:00 .(日志线的其余部分)
输入: 10.1.1.1,10.2.2.2 - 2010年年1月29日:11:00 .(日志线的其余部分)
产出: 10.1.1.1 -- 2010年年1月29日:11:00 .(日志线的其余部分)
输入: 10.1.1.1,10.2.2.2,10.3.3.3 - 2010年年1月29日:11:00 .(日志线的其余部分)
输出: 10.2.2.2 - 2010年年1月29日:11:00 .(日志线的其余部分)
发布于 2010-01-29 10:18:00
这可以通过在日志上运行这个sed命令来实现:
sed "s/^(0-9+.0-9+.0-9+.0-9+,)*(0-9+.0-9+.0-9+.0-9+),0-9+.0-9+.0-9+.0-9+ -/\2 -//“
一些解释:
s/MATCH PATTERN/REPLACE PATTERN/\2,它引用括号中的匹配的第二部分。(和),加号:+ (意思是“至少一次”)和文字字符句点:. (否则它被认为是通配符)。-i选项到sed意味着更改文件的位置。确保你在拷贝上工作!https://serverfault.com/questions/107478
复制相似问题