在单个语句中声明关联数组的所有元素-AWK

在单个语句中声明关联数组的所有元素-AWK,awk,associative-array,gawk,Awk,Associative Array,Gawk,我对awk相当陌生,我正试图弄清楚如何一次性声明关联数组的所有元素。例如,如果我想在Python中声明关联数组(实际上是字典),我会这样做: numbers = {'uno': 1, 'sero': 0} 现在,在awk中,是否可以将下面的两行代码转换为一行 numbers["uno"] = 1 numbers["sero"] = 0 据我所知,AWK没有数组文本,但此脚本演示了可以执行的操作: BEGIN { split("uno|1|sero|0",a,"|"); f

我对
awk
相当陌生,我正试图弄清楚如何一次性声明关联数组的所有元素。例如,如果我想在Python中声明关联数组(实际上是字典),我会这样做:

numbers = {'uno': 1, 'sero': 0}
现在,在
awk
中,是否可以将下面的两行代码转换为一行

 numbers["uno"] = 1
 numbers["sero"] = 0

据我所知,AWK没有数组文本,但此脚本演示了可以执行的操作:

BEGIN {
    split("uno|1|sero|0",a,"|");
    for (i = 1; i < 4; i += 2) {b[a[i]] = a[i+1];}
}
END {
    print b["sero"];
    print b["uno"];
}
或者

newarray("uno|1|sero|0");

据我所知,AWK没有数组文本,但此脚本演示了可以执行的操作:

BEGIN {
    split("uno|1|sero|0",a,"|");
    for (i = 1; i < 4; i += 2) {b[a[i]] = a[i+1];}
}
END {
    print b["sero"];
    print b["uno"];
}
或者

newarray("uno|1|sero|0");

不,你能做的最好是:

$ awk 'BEGIN {
    # populate the "numbers" array:
    split("uno:1,sero:0",a,/[:,]/)

    for (i=1;i in a;i+=2)
        numbers[a[i]] = a[i+1]

    # print the "numbers" array:
    for (i in numbers)
        print i, numbers[i]
}'
uno 1
sero 0

不,你能做的最好是:

$ awk 'BEGIN {
    # populate the "numbers" array:
    split("uno:1,sero:0",a,/[:,]/)

    for (i=1;i in a;i+=2)
        numbers[a[i]] = a[i+1]

    # print the "numbers" array:
    for (i in numbers)
        print i, numbers[i]
}'
uno 1
sero 0