6

我正在学习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 错误。如果这里的 AWK 专家可以帮助我理解错误消息的含义,那就太好了。

4

2 回答 2

7

length需要一个字符串参数。您正在向它传递一个数组。错误消息告诉您您正在使用需要标量的数组。

于 2012-09-10T16:00:09.663 回答
4
BEGIN {
  count = split("a,b,c", a, ",");

  for(i = 1; i <= count; i++) {
    print a[i];
  }
}

此外,length(ARRAY)适用于我的 awk 版本(GNU awk 4.0.1),但文档指出该行为是非标准的。

于 2012-09-10T16:03:50.860 回答