awk-数组的使用

###################################################
首先来熟悉下数组的概念:
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]】

转载于:https://blog.51cto.com/13690439/2095199

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值