您没有在示例输出中包含 IP 地址,我正在编写输出中包含 IP 地址的答案。
access.log
我的 apache文件的示例日志行:
27.0.0.1 - - [28/Oct/2012:21:38:34 +0530] "GET /phpmyadmin HTTP/1.1" 301 559 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4"
要根据他们使用的操作系统获取每天唯一身份访问者的数量:
awk '$6 ~ /GET/ \
{ gsub("[[]", "", $4); \
gsub(":.*", "", $4); \
print $1,$4,$14}' access.log | \
sort -t ' ' -k 2 | \
uniq -c|awk '{print $3,$2}'|uniq -c|awk '{print $3, $2, $1}'
以下答案适用于基于日期、每个操作系统的每个 IP 的唯一用户。
一个从上面获得所需输出的衬垫:
awk '$6 ~ /GET/ \
{ gsub("[[]", "", $4); \
gsub(":.*", "", $4); \
print $1,$4,$14}' access.log | \
sort -t ' ' -k 2 | \
uniq -c|awk '{print $3,$2,$4,$1}'
说明:
awk 的第一行是过滤带有GET
请求的行。
第二条 awk 行用于删除多余的右方括号[
。
第三行将从 apache 日志中的 datetime 字段中删除时间。
第四行打印必填字段。
第五行根据日期对输出进行排序。
最后,使用uniq
和awk
再次以您想要的格式打印输出。
输出:
28/Oct/2012 127.0.0.1 Linux 1