1. 程式人生 > 其它 >Linux中根據訪問日誌統計訪問量最高的前N個IP

Linux中根據訪問日誌統計訪問量最高的前N個IP

技術標籤:Linux常用命令linuxshellawk

背景

Linux指令碼考察,一個檔案裡存了很多日誌,每行IP開頭,需要統計出排名前三的的IP。主要考察Linux命令的熟悉度

答案

awk '{print $1}' log|sort |uniq -c|sort -nr -k 1|head -n 3

測試資料

128.233.172.181  view1
136.233.172.182  view1
128.234.172.181  view2
128.233.172.183  view1
136.233.172.182  view1
128.238.172.181  view3
128.233.172.181  view1

預期結果

2 136.233.172.182
2 128.233.172.181
1 128.238.172.181

測試截圖

命令分析

awk部分:

awk '{print $1}' log

awk命令詳解

每行按空格或TAB分割,輸出文字中的第一項。即為IP部分。

sort和uniq部分:

sort |uniq -c|sort -rn -k 1

sort命令詳解 uniq命令詳解

這各分三部分看

sort先排一次序 先排序是因為去重與統計的 ‘uniq’命令只能處理相鄰行

uniq 去重 -c代表在每列旁邊顯示該行重複出現的次數

sort-rn 表示依照數字大小順序相反的順序進行排序也就是逆序;-k 1表示使用第一列進行排序

head部分

head命令詳解

head -n 3 表示取前3行顯示