如何在awk中初始化数组

如题所述

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]。接下来的第二行,$1是"b",因此array[b]被赋值为2。第三行时,由于已经存在array[a],因此它被更新为1+3。第四行时,array[a]被更新为1+4,array[b]保持为2。第五行时,array[b]被更新为2+5。第六行时,array[a]被更新为1+4+6,而array[b]保持为7。

END部分是指命令执行完毕后执行的语句,这里打印出的是array[a]的值。
温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜