我是相当新的,awk
并试图弄清楚如何一次性声明关联数组的所有元素。例如,如果我想在 Python 中声明一个关联数组(实际上是字典),我会这样做:
numbers = {'uno': 1, 'sero': 0}
现在,awk
是否可以将下面的两行代码转换为一行?
numbers["uno"] = 1
numbers["sero"] = 0
我是相当新的,awk
并试图弄清楚如何一次性声明关联数组的所有元素。例如,如果我想在 Python 中声明一个关联数组(实际上是字典),我会这样做:
numbers = {'uno': 1, 'sero': 0}
现在,awk
是否可以将下面的两行代码转换为一行?
numbers["uno"] = 1
numbers["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 {
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);
或喜欢
newarray("uno|1|sero|0");