AWK的数组用法跟javascript类似。
1,定义数组
awk 'BEGIN{a[0]="zhangsan";a[1]="lisi";print a[0]}'
2,打印一个没有定义的数组项,值为空
awk 'BEGIN{a[0]="zhangsan";a[1]="lisi";print a[2]}'
3,判断一个数组项 是否存在,用 ( 下标 in 数组 )
root$ awk 'BEGIN{a[0]="zhangsan";a[1]="lisi"; if( 1 in a ) print a[1]; }'
lisi
4,数组也可以用关联索引定义
root$ awk 'BEGIN{a["name"]="张三";a["name2"]="李四";print a["name"]}'
张三
5,delete:删除一个数组项或者一个数组
root$ awk 'BEGIN{a["name"]="张三";a["name2"]="李四";print a["name"]; delete a["name"]; print a["name"]; }'
张三
root$ awk 'BEGIN{a["name"]="张三";a["name2"]="李四";print a["name"]; delete a["name"]; print a["name2"]; }'
张三
李四
root$ awk 'BEGIN{a["name"]="张三";a["name2"]="李四";print a["name"]; delete a; print a["name2"]; }'
张三
6,数字,字符串都可以进行算术运算
当一个不存在的元素,参与算术运算时,会被当做0
当一个元素是字符串,参与算术运算时,会被当做0
root$ awk 'BEGIN{ a = 1; print a; a = a + 1; print a }'
1
2
root$ awk 'BEGIN{ a = "ghostwu"; a = a + 1; print a }'
1
root$ awk 'BEGIN{ print a[0]; a[0] = a[0] + 1; print a[0] }'
1
7,应用,统计某个字符串出现的次数
root$ awk '{count[$2]++} END{ for( i in count ) { print i,count[i]; } }' host.txt
192.177.81.1 1
10.0.0.5 3
192.168.9.254 1
192.168.1.1 3
192.168.3.98 2
root$ cat host.txt
host1 192.168.1.1
host2 192.177.81.1
host3 10.0.0.5
host4 192.168.3.98
host5 192.168.3.98
host6 192.168.9.254
host7 192.168.1.1
host8 192.168.1.1
host9 10.0.0.5
host10 10.0.0.5