Расширение ответа от @AndrewSchulman, использование -rn в качестве опции глобальной сортировки переворачивает все столбцы.В этом примере авторы с одинаковым значением ассоциативного массива будут выводиться в обратном порядке по имени.
Например,
declare -A authors
authors=( [Pushkin]=10050 [Gogol]=23 [Dostoyevsky]=9999 [Tolstoy]=23 )
for k in "${!authors[@]}"
do
echo $k ' - ' ${authors["$k"]}
done | sort -rn -k3
будет выводить
Pushkin - 10050
Dostoyevsky - 9999
Tolstoy - 23
Gogol - 23
Могут быть предусмотрены параметры для сортировки определенных столбцов.после спецификатора столбца.т. е.
sort -k3rn
Обратите внимание, что ключи могут быть указаны как промежутки.Здесь -k3
бывает хорошо, потому что это последний диапазон, но чтобы явно использовать только столбец 3 (в случае добавления дополнительных столбцов), его следует указать как -k3,3
, аналогично сортировке по столбцу три в порядке убывания,и затем столбец один в порядке возрастания (что, вероятно, является тем, что требуется в этом примере):
declare -A authors
authors=( [Pushkin]=10050 [Gogol]=23 [Dostoyevsky]=9999 [Tolstoy]=23 )
for k in "${!authors[@]}"
do
echo $k ' - ' ${authors["$k"]}
done | sort -k3,3rn -k1,1
выведет
Pushkin - 10050
Dostoyevsky - 9999
Gogol - 23
Tolstoy - 23