awk操作数组注意几点

awk的数组跟其他程序设计语言的数组有所不同:
1、可以直接在awk中定义数组;
2、数组元素的初始值为0或空字符串,除非他们被显示的指定初始化;
3、数组可以自动扩展;
4、都是关联数组,数字下标也会转成字符串索引。

 

split函数的返回值是数组长度。awk中数组的下标是从1开始的。

$ echo ""|awk 'BEGIN{a="here is test";len=split(a,arr," ")}{print len, arr[1]}'
3 here

求数组长度的方法:

length(arr)

删除数组元素:delete arr['key']可以用于删除数组元素。也可以使用delete arr来删除整个数组。

$ echo ""|awk 'BEGIN{a="here is test";len=split(a,arr," ")}{delete arr[1];for(k in arr)print arr[k]}'
is
test

 

for in输出数组:i代表数组的下标,不是val。

$ echo ''|awk 'BEGIN{arr["one"]=1;arr["two"]=2;arr["three"]=3;}{for (i in arr)print i, arr[i]}'
three 3
two 2
one 1

查的awk的for in print数组可能有乱序问题:(我测试没有),图片附上解决办法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值