awk

Sort Array Indexes using asorti

排序数组索引使用asorti

就像排序数组值,你也可以处理所有数组索引,排序它们,并且存储他们在一个新的数组里,使用asorti

下面的例子演示asorti与asort的不同,请记住以下几点:

1. asorti排序索引(非值),并将它们存储作为值

2. 如果你指定asorti(state),你将失去原有的值。即索引现在成为值。因此,为了安全起见,始终指定两个参数到asorti函数,比如asorti(state,stateabbr).这样,原数组(state),它没有被覆盖。

$ cat asorti.awk
BEGIN {
    state["TX"]="Texas";
    state["PA"]="Pennsylvania";
    state["NV"]="Nevada";
    state["CA"]="California";
    state["AL"]="Alabama";
    print "----- Function: asort -----"
    total = asort(state,statedesc);
    for (i=1; i<= total; i++)
        print "Index",i,"contains",statedesc[i];
    print "----- Function: asorti -----"
    total = asorti(state,stateabbr);
        for (i=1; i<= total; i++)
        print "Index",i,"contains",stateabbr[i];
}

$ awk -f asorti.awk
----- Function: asort -----
Index 1 contains Alabama
Index 2 contains California
Index 3 contains Nevada
Index 4 contains Pennsylvania
Index 5 contains Texas
----- Function: asorti -----
Index 1 contains AL
Index 2 contains CA
Index 3 contains NV
Index 4 contains PA
Index 5 contains TX