从最近 5000 个点击中获取前 10 个 IP(Apache access.log)

问题描述 投票:0回答:2

我正在尝试从 Apache access.log 文件中获取最近 5000 个点击中的前 10 个 IP。

我已经尝试过这个单行:

tail -5000 example_access.log |awk '{print $1}'|sort |uniq -c|sort -rn |head -10

我从中得到的是:

1465 128.74.162.38

1154 194.63.141.238

820 176.31.30.184

235 217.164.16.157

1413 54.38.137.26

但它没有按预期工作,因为如果我删除头 -5 并将其替换为 less,我就可以看到整个列表,并且我有这一行 “422 80.120.179.134” (应该采用这个的位置“235 217.164.16.157”)。

我正在使用这个文件:http://www.almhuette-raith.at/apache-log/access.log

有人知道我做错了什么吗?

谢谢你!

sorting unix awk
2个回答
1
投票

AFAIU 你的问题是,你需要获取重复数字更大的前 10 个 IP,那么以下内容可能会帮助你。

awk '{a[$1]++} END{for(i in a){print i,a[i]}}' Input_file| sort -nrk2.1 | head -10

编辑:因为OP想要检查最后5000行并获取前10个IP的最高计数。

tail -5000 Input_file | awk '{a[$1]++} END{for(i in a){print i,a[i]}}'  | sort -nrk2.1 | head -10

0
投票

cat access.log | grep '- -' | grep '- -' | awk '{print $1}' |排序| uniq-c|排序-nr |头-n 10

输出

  • 151 103.170.153.35
  • 66 216.244.66.243
  • 28 66.249.70.200
  • 28 66.249.70.199
  • 24 8.208.10.94
© www.soinside.com 2019 - 2024. All rights reserved.