我正在学习AWK。这是一个简单的代码片段,我试图将一个字符串拆分成一个数组并迭代它。
BEGIN {
split("a,b,c", a, ",");
for(i = 1; i <= length(a); i++) {
print a[i];
}
}
运行此代码时,出现以下错误:
awk:awk.txt:4:致命:尝试在标量上下文中使用数组“a”
但是,如果我将for语句更改为for (i in a)
,它就可以了。在进一步尝试通过谷歌搜索来理解这意味着什么时,我看到许多论坛(例如:[1])谈论awk bugs。如果这里的AWK大师可以帮助我理解错误信息的含义,那将是很棒的。
答案 0 :(得分:6)
length
需要一个字符串参数。你传给它一个数组。错误消息告诉您正在使用预期标量的数组。
答案 1 :(得分:3)
BEGIN {
count = split("a,b,c", a, ",");
for(i = 1; i <= count; i++) {
print a[i];
}
}
此外,length(ARRAY)
适用于我的awk版本(GNU awk 4.0.1),但文档说明行为是非标准的。