Linux中根據訪問日誌統計訪問量最高的前N個IP
阿新 • • 發佈:2020-12-15
背景
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
每行按空格或TAB分割,輸出文字中的第一項。即為IP部分。
sort和uniq部分:
sort |uniq -c|sort -rn -k 1
這各分三部分看
sort先排一次序 先排序是因為去重與統計的 ‘uniq’命令只能處理相鄰行
uniq 去重 -c代表在每列旁邊顯示該行重複出現的次數
sort-rn 表示依照數字大小順序相反的順序進行排序也就是逆序;-k 1表示使用第一列進行排序
head部分
head -n 3 表示取前3行顯示