Вот еще один ответ на очень похожую проблему:
http://www.computing.net/answers/unix/urgent-help-with-sorting-in-awk/4442.html
Что должно быть примерно таким:
gawk 'BEGIN {c=1} { array[c] = sprintf ("%s %s", $2, $1); c++ }
END { asort(array); for (x=1;x<c;x++) { print array[x] } }'
Обратите внимание, что я использовал 'gawk'. Если вы хотите встроенную сортировку, используйте gawk.
В этом примере берется «разделенный пробелами» ввод пар ключ-значение и сортируется по второму значению (конечно, он выводит их в формате значение / ключ, но вы видите, что я там делаю.)
Чтобы сделать это с массивом, существующим в gawk, вы должны использовать нечто подобное.
Если вы используете awk или mawk, вам придется использовать одну из многих функций сортировки, доступных на man-страницах, чтобы выполнить сортировку.
Из справочной страницы gawk:
Все массивы в AWK являются ассоциативными, то есть индексируются строковыми значениями.
Специальный оператор in может использоваться в операторе if или while, чтобы увидеть, имеет ли массив индекс, состоящий из
конкретное значение.
if (val в массиве)
массив печати [val]
Если массив имеет несколько индексов, используйте (i, j) в массиве.