shell awk数组及应用案例

awk 数组的定义及使用
定义数组

  • 格式:数组名[下标]=元素值   (a[0]=  ,a[1]=  )

调用数组

  • 格式:数组名[下标]

遍历数组

  • 格式:for(变量名in数组名){print数组名[变量]}

定义数组name并赋予两个值,分别为Jordan和kobe

[root@zabbix-server day5]# awk 'BEGIN{
> name[0]="Jordan";name[1]="kobe";print name[1],name[0]
> }'
kobe Jordan

定义数组age,age[Jordan]的值为58,age[kobe]的值为37

[root@zabbix-server day5]# awk 'BEGIN{age["Jordan"]=58;age["kobe"]=37; \
> print age["Jordan"],age["kobe"]
> }'
58 37

遍历数组的值

[root@zabbix-server day5]# awk 'BEGIN{ x[0]=0;x[1]=1;x[2]=2;x[3]=3;
> for(i in x){print x[i] } }
> '
0
1
2
3
[root@zabbix-server day5]# awk 'BEGIN{ x[0]=0;x[1]=1;x[2]=2;x[3]=3;
for(i in x){ print i,x[i] } }
'
0 0
1 1
2 2
3 3

应用案例
统计web访问日志
访问日志的格式

tail access_log
简化数据,统计每个IP访问的次数

[root@zabbix-server day5]# more access.log 
172.40.1.18
172.40.1.17
172.40.1.18
172.40.1.16
172.40.1.17
172.40.1.18
[root@zabbix-server day5]# awk '{IP[$1]++} END{ for(i in IP) {print i,IP[i] } }' access.log
172.40.1.16 1
172.40.1.17 2
172.40.1.18 3
[root@zabbix-server day5]# who | awk '{IP[$1]++} END{ for(i in IP) {print i,IP[i] } }'
root 1


版权声明:本文为wangl2014原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。