【发布时间】:2013-01-11 23:38:10
【问题描述】:
我尝试在 awk 中创建一个伪多维数组。
# Calculate cumulative context score
BEGIN { FS=OFS="\t" }
{
a[$2+FS+$7,$3]+=$6
}
END { for (i,j) in a
{ print i,j,a[i,j] }
}
输出:
awk: ccstscan.awk:9: END { for (i,j) in a
awk: ccstscan.awk:9: ^ syntax error
这是 GNU awk 手册中提到的内容:
测试一个特定的索引序列是否存在于一个 多维数组,使用与用于 一维数组。将整个索引序列写入 括号,以逗号分隔,作为左操作数:
(subscript1, subscript2, ...) in array
我尝试修改脚本以创建一个真正的多维数组:
BEGIN { FS=OFS="\t" }
{
a[$2+FS+$7][$3]+=$6
}
END { for i in a
{
for j in a[i]
{ print i,j,a[i][j]
}
}
}
我用 gawk 运行它。它也给出了一个错误:
gawk: ccstscan.awk:6: a[$2+FS+$7][$3]+=$6
gawk: ccstscan.awk:6: ^ syntax error
gawk: ccstscan.awk:9: END { for i in a
gawk: ccstscan.awk:9: ^ syntax error
gawk: ccstscan.awk:11: for j in a[i]
gawk: ccstscan.awk:11: ^ syntax error
gawk: ccstscan.awk:11: for j in a[i]
gawk: ccstscan.awk:11: ^ syntax error
gawk: ccstscan.awk:12: { print i,j,a[i][j]
gawk: ccstscan.awk:12: ^ syntax error
制作和扫描多维关联数组的正确格式是什么
【问题讨论】:
-
缺少循环(和),它是
for (i in a),而不是for i in a。此外,您可能会遇到关于数组索引的第一个语法错误,因为您使用的是较旧的 gawk,真正的多维数组是最近才添加的。 -
我会在 gawk4 gnu.org/software/gawk/manual/html_node/Arrays-of-Arrays.html 中添加数组数组的链接
标签: multidimensional-array awk gawk