RosettaCodeData/Task/Sort-an-array-of-composite-structures/AWK/sort-an-array-of-composite-structures.awk
2019-09-12 10:33:56 -07:00

34 lines
902 B
Awk

# syntax: GAWK -f SORT_AN_ARRAY_OF_COMPOSITE_STRUCTURES.AWK
BEGIN {
# AWK lacks structures but one can be simulated using an associative array.
arr["eight 8 "]
arr["two 2 "]
arr["five 5 "]
arr["nine 9 "]
arr["one 1 "]
arr["three 3 "]
arr["six 6 "]
arr["seven 7 "]
arr["four 4 "]
arr["ten 10"]
arr["zero 0 "]
arr["twelve 12"]
arr["minus2 -2"]
show(1,7,"@val_str_asc","name") # use name part of name-value pair
show(8,9,"@val_num_asc","value") # use value part of name-value pair
exit(0)
}
function show(a,b,sequence,description, i,x) {
PROCINFO["sorted_in"] = "@unsorted"
for (i in arr) {
x = substr(i,a,b)
sub(/ +/,"",x)
arr[i] = x
}
PROCINFO["sorted_in"] = sequence
printf("sorted by %s:",description)
for (i in arr) {
printf(" %s",arr[i])
}
printf("\n")
}