我对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的内容。
答案 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