【发布时间】:2015-02-04 00:15:13
【问题描述】:
我正在使用以下格式来计算唯一 IP 访问我的网站的次数。
在日志文件中搜索唯一 ips 的总数
zcat *file* | awk '{print $1}' | sort | uniq -c | sort -n
这给了我一个 IP 列表和它的发生。
1001 109.165.113.xxx
1001 178.137.88.xxx
1001 178.175.13.xxx
1001 81.4.217.xxx
1060 74.122.180.xxx
1103 67.201.52.xxx
1203 81.144.138.xxx
1670 54.240.158.xxx
1697 54.239.137.xxx
2789 39.183.147.xxx
4630 93.158.143.xxx
我想知道的很简单,是否可以在单个命令行上完成。
我只想要这个列表的计数。所以从上面的例子。我想让缓冲区告诉我 11。我想我可以使用第二个 AWK 命令来计算第二个输出的唯一出现次数,但我猜你不能在一个命令行中使用 AWK 两次。
显然我可以将以上内容输出到日志文件,然后运行第二个 awk 命令来计算第二个字段 (IPS) 的唯一出现次数,但我希望在单个命令中完成。
【问题讨论】:
-
用
sort -u | wc -l替换sort|uniq -c|sort -n -
而且你可以在管道中多次使用 awk
-
感谢@glennjackman,这行得通