欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

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