awk编程——数组

来源:互联网 发布:linux回到家目录 编辑:程序博客网 时间:2024/05/21 07:00

数组

定义数组

aa=(1 2 3 4 5 6)
这些值会存储在以0为起始索引的连续位置上

aa[1]="www"
aa[2]="sss"
数组的第一个值、第二个值,以此类推。



关联数组

关联数组是指数组的索引不仅仅是数字,也可以是字符串,关联数组在索引和数组元素值之间建立起关联,对每一个数组元素,awk自动维护了一对值:索引和数组元素值。关联数组的值无需以连续的地址进行存储。awk的所有数组都是关联数组。
如:array[09]制定一个数组值,如果换成array[9]就不能指定与array[09]相同的值。
[root@ns1 ~]# awk 'BEGIN{data[10.15]="1200";CONVFMT="%d";printf("<%s>\n",data[10.15])}'<>                      #所以此处结果输出为空值                


split函数

split(a,b,c)函数将字符串以c为分隔符,将a字符串拆分为字符串数组元素存放在b中
split函数用法
[root@ns1 ~]# awk 'BEGIN {print split("abc/def/xyz",str,"/")}'3                                                  #将字符串分成了3个元素
[root@ns1 ~]# cat array.awk #!/bin/awk -fBEGIN {FS=" "}{split($1,name,",");for(i in name) print name[i]}                      #用for循环将name数组的内容打印出来[root@ns1 ~]# cat swli  hao ss sssssssssszhang  ju ss sssssssssswang  bin ss ssssssssssszhu  lin ss ssssssssss[root@ns1 ~]# ./array.awk swlizhangwangzhu

数组形式的系统变量

awk系统变量中有两个变量是以数组的形式提供的:ARGV和ENVIRON。ARGC是ARGV数组中元素的个数,从ARGV[0]开始,到ARGV[ARGC-1]结束。
#下面是脚本及素材内容
[root@ns1 ~]# cat ss.awk #!/bin/awk -f   BEGIN {FS=",";        if(ARGC>2) {                                #ARGC未定义默认为0,小于2进入循环                        name=ARGV[1];                        delete ARGVp[1] }        else  {                while(!name){print "enter a name";                                getline name< "-"}  #利用getline函数将输入值赋给name变量              }        }$1~name {print $1,$3}                               #第一个域与姓名模糊匹配,成功输出第一、三个域[root@ns1 ~]# cat swli hao,ss,11111111111zhang ju,ss,2222222222wang bin,ss,33333333333zhu lin,ss,44444444444
#下面是脚本执行结果[root@ns1 ~]# ./ss.awk swenter a nameli haoli hao 11111111111






0 0
原创粉丝点击