在awk中,要对多维数组进行排序,需要设置PROCINFO["sorted_in"]变量。PROCINFO是awk的一个系统数组,保存着各种程序信息。sorted_in是该数组的一个键,它的值可以是"@ind_str_asc"(默认值,按字典序升序排序)或"@ind_str_desc"(按字典序降序排序)。
下面是一个示例代码,对一个二维数组按第一列升序排序:
# 定义一个二维数组
array[1]["name"] = "Tom";
array[1]["age"] = 20;
array[2]["name"] = "Jerry";
array[2]["age"] = 18;
array[3]["name"] = "Bob";
array[3]["age"] = 22;
# 设置排序方式
PROCINFO["sorted_in"] = "@ind_num_asc";
# 对数组进行排序
for(i in array){
print i, array[i]["name"], array[i]["age"];
}
输出结果:
1 Tom 20
2 Jerry 18
3 Bob 22
可以看到,数组已按第一列升序排序。
需要注意的是,PROCINFO["sorted_in"]在每个awk程序运行期间只能设置一次。如果需要在程序中多次排序,可以在每次排序前重新赋一个值。
上一篇:awk中对列进行分组的方法
下一篇:AWK重复替代