Linux常用基本命令:三剑客命令之-awk数组用法

时间:2023-03-09 09:52:10
Linux常用基本命令:三剑客命令之-awk数组用法

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 }'

ghostwu@dev:~/linux/awk$ awk 'BEGIN{ a = "ghostwu"; a = a + 1; print a }'

ghostwu@dev:~/linux/awk$ awk 'BEGIN{ print a[0]; a[0] = a[0] + 1; print a[0] }'

7,应用,统计某个字符串出现的次数

ghostwu@dev:~/linux/awk$ awk '{count[$2]++} END{ for( i in count ) { print i,count[i]; } }' host.txt
192.177.81.1
10.0.0.5
192.168.9.254
192.168.1.1
192.168.3.98
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