1. 程式人生 > >使用shell指令碼統計檔案中ip出現的次數

使用shell指令碼統計檔案中ip出現的次數

首先準備檔案demo.txt,內容如下:

1 192.168.41.20
2 192.168.41.21
3 192.168.41.22
4 192.168.41.23
5 192.168.41.24
6 192.168.41.25

統計出現次數最多的ip次數:

cat demo.txt | awk '{print $2}' | sort | uniq -c | sort -n -r | head -n 1

注:

awk '{ print $2}':取資料的第2域(第2列),第一列是標號(123...),第二列是ip地址

sort:對IP部分進行排序。

uniq -c
:列印每一重複行出現的次數。(並去掉重複行) sort -n -r:按照重複行出現的次序倒序排列。 head -n 1:取排在第一位的ip地址

統計netstat -ntu命令的結果中出現次數最多的ip地址:

執行命令 netstat -ntu,顯示結果如下:

Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:8152 127.0.0.1:4193 TIME_WAIT
tcp 0 0 127.0.0.1:8152 127.0.0.1:4192 TIME_WAIT
tcp 0 0 127.0.0.1:8152 127.0.0.1:4196 TIME_WAIT
tcp 0 0 127.0.0.1:8152 127.0.0.1:4199 TIME_WAIT
tcp 0 0 127.0.0.1:8152 127.0.0.1:4201 TIME_WAIT
tcp 0 0 127.0.0.1:8152 127.0.0.1:4204 TIME_WAIT
tcp 0 0 127.0.0.1:8152 127.0.0.1:4207 TIME_WAIT
tcp 0 0 127.0.0.1:8152 127.0.0.1:4210 TIME_WAIT
tcp 0 0 192.168.32.62:41682 192.168.47.27:5431 TIME_WAIT
tcp 0 0 192.168.32.62:41685 192.168.47.27:5431 TIME_WAIT

使用指令碼命令進行統計:

netstat -ntu | tail -n +3|awk '{ print $5}' | cut -d : -f 1 | sort | uniq -c| sort -n -r | head -n 5

統計結果:

8 127.0.0.1
2 192.168.47.27

注:

tail -n +3 :去掉上面用紅色標明的兩行。

awk '{ print $5}':取資料的第5域(第5列)

cut -d : -f 1 :取藍色部分前面的IP部分。

sort:對IP部分進行排序。

uniq -c:列印每一重複行出現的次數。(並去掉重複行)

sort -n
-r:按照重複行出現的次序倒序排列。 head -n 5:取排在前5位的IP