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 マニュアルに記載されている内容です。
特定のインデックス シーケンスが多次元配列に存在するかどうかをテストするには、1 次元配列に使用されるのと同じ演算子 (in) を使用します。左のオペランドとして、コンマで区切られた括弧内のインデックスのシーケンス全体を記述します。
(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
多次元連想配列を作成およびスキャンするための正しい形式は何ですか