AWK中的字符串是否被视为数组?

时间:2018-02-14 14:21:38

标签: awk gawk

我对awk / gawk很新,我发现这有点令人困惑。我希望你能帮助我解释一下这个问题: awk中的字符串是否被视为字符数组?

我已经读过一些关于这种计算语言的字符串的东西,所以我试着制作一个这样的脚本:

BEGIN {
   myArray[1] = "foo"
   myArray[2] = "bar"
   myArray[3] = 42

   awkward()
}

function awkward() {
    for (j in myArray) {
        for (d in myArray[j]) {
            # error!
        }
    }
}

我是否天真地认为这样的事情可行?它实际上不适用于我的gawk版本,给我这个错误:

for (d in myArray[j]) {
                 ^ syntax error

有人可以帮我理解为什么这不起作用吗?额外奖励:有人可以分享他们的解决方法吗?

为了澄清一点,我试图通过char使用索引myArray[j]上的for循环来访问d char的内容。

1 个答案:

答案 0 :(得分:1)

不,awk中的字符串不会被视为字符数组。使用substr()

$ cat foo.awk
BEGIN {
   myArray[1] = "foo"
   myArray[2] = "bar"
   myArray[3] = 42

   awkward()
}

function awkward() {
    for (j in myArray) {
        for (i=1;i<=length(myArray[j]);i++) {  # here
            print substr(myArray[j],i,1)       # and here
        }
    }
}

运行它:

$ awk -f foo.awk
f
o
o
b
a
r
4
2