Linux常用基本命令:三剑客命令之-awk数组用法
程序员文章站
2022-07-11 10:34:15
AWK的数组用法跟javascript类似。 1,定义数组 2,打印一个没有定义的数组项,值为空 3,判断一个数组项 是否存在,用 ( 下标 in 数组 ) 4,数组也可以用关联索引定义 5,delete:删除一个数组项或者一个数组 6,数字,字符串都可以进行算术运算 >当一个不存在的元素,参与算术 ......
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 数组 )
ghostwu@dev:~/linux/awk$ awk 'BEGIN{a[0]="zhangsan";a[1]="lisi"; if( 1 in a ) print a[1]; }' lisi
4,数组也可以用关联索引定义
ghostwu@dev:~/linux/awk$ awk 'BEGIN{a["name"]="张三";a["name2"]="李四";print a["name"]}' 张三
5,delete:删除一个数组项或者一个数组
ghostwu@dev:~/linux/awk$ awk 'BEGIN{a["name"]="张三";a["name2"]="李四";print a["name"]; delete a["name"]; print a["name"]; }' 张三 ghostwu@dev:~/linux/awk$ awk 'BEGIN{a["name"]="张三";a["name2"]="李四";print a["name"]; delete a["name"]; print a["name2"]; }' 张三 李四 ghostwu@dev:~/linux/awk$ awk 'BEGIN{a["name"]="张三";a["name2"]="李四";print a["name"]; delete a; print a["name2"]; }' 张三
6,数字,字符串都可以进行算术运算
>当一个不存在的元素,参与算术运算时,会被当做0
>当一个元素是字符串,参与算术运算时,会被当做0
ghostwu@dev:~/linux/awk$ awk 'BEGIN{ a = 1; print a; a = a + 1; print a }' 1 2 ghostwu@dev:~/linux/awk$ awk 'BEGIN{ a = "ghostwu"; a = a + 1; print a }' 1 ghostwu@dev:~/linux/awk$ awk 'BEGIN{ print a[0]; a[0] = a[0] + 1; print a[0] }' 1
7,应用,统计某个字符串出现的次数
ghostwu@dev:~/linux/awk$ 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 ghostwu@dev:~/linux/awk$ 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