AWK 多维数组基础
AWK 支持通过逗号分隔的下标实现多维数组效果,语法为 array[index1,index2,...]。内部使用 SUBSEP 变量作为下标分割符,默认值为 ASCII 码 \034。
修改分割符示例
awk 'BEGIN{SUBSEP=":"; array["a","b"]=1; for(i in array) print i}'
多文件处理示例
以下示例演示了如何使用 ARGIND 遍历多个输入文件并统计数据:
# cat file1
g1.1 2
g2.2 4
g2.1 5
g4.1 3
# cat file2
g1.1 2
g1.2 3
g4.1 4
# cat file3
g1.2 3
g5.1 3
awk '{a[ARGIND" "$1]=$2; b[$1]}
END {
for(i in b) {
printf i" ";
for(j=1;j<=ARGIND;j++)
printf "%s ", a[j" "i] ? a[j" "i] : "-";
print "";
}
}' file1 file2 file3
输出结果:
g2.2 4 - -
g5.1 - - 3
g1.1 2 2 -
g1.2 - 3 3
g4.1 3 4 -
g2.1 5 - -

