问题

如何从Httpd日志中提取所有的IP地址(不重复)。

apache日志中的记录类似下面:

XXX.64.70.XXX - - [26/Mar/2011:00:28:23 -0700] "GET/HTTP/1.1" 403 4609 
"-" "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.16 (KHTML, like 
Gecko) Chrome/10.0.648.204 Safari/534.16"

回答

根据apache日志条目格式,从中提取IP地址的最简单方法是使用awk、sort和uniq命令的组合。

首先获取ip地址列表,这可以使用awk命令完成:

$awk '{ print $1 } ' apache_log

然后使用sort命令对IP地址进行排序:

$awk '{ print $1 } ' apache_log | sort

使用uniq删除重复项:

$awk '{ print $1 } ' apache_log | sort | uniq

使用wc可以统计有多少个IP。

$awk '{ print $1 } ' apache_log | sort | uniq | wc -l
在Linux上如何从apache日志文件中提取IP地址(不重复)
日期:2020-07-07 20:56:18 来源:oir作者:oir