如何在awk中初始化数组

 我来答
草原上之狼
高粉答主

2018-05-21 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.9万
采纳率:93%
帮助的人:4144万
展开全部
awk的数组其实很好理解。一般编程语言的数组,其下标只能是数字,比如a[3],表示数组a的第四个元素。
但是awk的不同,其下标可以是任意字符或者字符串。比如a[bob],表示数组a的一个元素,它的下标是"bob"。

比如有个文本文件alex.txt:
a 1
b 2
c 3
a 4
b 5
a 6

如果我们想统计以a开头的行后面的数字之和,就是“1+4+6”,我们用awk怎么做呢:
cat alex.txt | awk ‘{if(!array[$1]) {array[$1]=$2;}
elae{arrary[$1]=array[$1]+$2;}}END{print array[a];}’

命令中有个数组array,当读取alex.txt第一行时,$1是“a”,array[a]刚开始是“”(空字符串),所以!array[a]就为真,那么array[a]=1,数组array就有了第一个元素array[a].
同理,读取第二行之后结果array[a]=1, array[b]=2,数组array就有了2个元素。
第三行之后结果是array[a]=1, array[b]=2, array[c]=3,数组array就有了3个元素。
第四行之后结果是array[a]=5(1+4,4为第四行的$2), array[b]=2, array[c]=3
第五行之后结果是array[a]=5, array[b]=7, array[c]=3

第六行之后结果是array[a]=11, array[b]=7, array[c]=3

END的意思是读取完文件所有行后执行的语句,打印出数组第一个元素array[a].
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式