1. 程式人生 > >awk-數組的使用

awk-數組的使用

awk awk數組 統計IP地址數量

###################################################
首先來熟悉下數組的概念:
1)數組名稱:數組名稱裏不能有變量
2)數組元素:一個數組變量裏面含有多個元素(值)
3)起始位置:從0號位開始
.
定義數組變量:# a=(11 22 33 44)
.
查看數組的值:# echo ${a[0]} 結果:11
###################################################
實驗目標:
統計a.txt下不同IP地址出現的次數。
.
實驗環境:

cat a.txt

      192.168.1.1
    192.168.2.2
    192.168.1.1
    192.168.3.3
    192.168.2.2
    192.168.1.1

結果: # awk ‘{IP[$1]++}END{for(i in IP){print i,IP[i]}}‘ a.txt
.
過程解析:

    第一部分:IP[$1]++
    IP:定義的一個數組變量IP,數據變量IP的下標名取不同的IP地址(awk中下標名可以是字符串)
    [$1]:這裏的$1是對a.txt的第一列進行取值。(之所以可以實現循環取值,是因為awk逐行讀取的機制)
    ++:當a[0]=1時,a[0]++結果為2
    所以IP[$1]++過程如下:
        IP[192.168.1.1]  1
        IP[192.168.2.2]  1
        IP[192.168.1.1]  2
        IP[192.168.3.3]  1
        IP[192.168.2.2]  2
        IP[192.168.1.1]  3

    第二部分:{for(i in IP){print i,IP[i]}
    for(i in IP):這裏i取值取的是數組變量IP的下標名,即:不同的ip地址
    {print i,IP[i]}:最後我們希望看到的是【ip地址】和【數量】,所以打印【i值】和【元素IP[i]】

awk-數組的使用