shell awk数组及应用案例

本文介绍了awk编程中数组的定义、调用和遍历方法,并通过实例展示了如何定义和操作关联数组。此外,还利用awk解析和统计访问日志,展示其在日志分析中的实用性,例如统计不同IP的访问次数。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值