AWK 中的字符串是否被视为数组?
Are strings in AWK treated as arrays?
我是 awk/gawk 的新手,我发现这有点令人困惑。我希望你能帮助我阐明这个问题:Are strings in awk treated as array of chars?
我读过一些关于这种计算语言的严格性的文章,所以我尝试制作这样的脚本:
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
任何人都可以帮助我更多地了解为什么这不起作用吗?奖励:任何人都可以分享他们的解决方法吗?
为了澄清一点,我试图通过索引 d
.
上的 for 循环逐个访问 myArray[j]
字符的内容
不,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
我是 awk/gawk 的新手,我发现这有点令人困惑。我希望你能帮助我阐明这个问题:Are strings in awk treated as array of chars?
我读过一些关于这种计算语言的严格性的文章,所以我尝试制作这样的脚本:
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
任何人都可以帮助我更多地了解为什么这不起作用吗?奖励:任何人都可以分享他们的解决方法吗?
为了澄清一点,我试图通过索引 d
.
myArray[j]
字符的内容
不,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