Сортировка элементов

Массивы и коллекции / Массивы

numbers=(11 2 5 7 3)

#bash cannot sort an array: sort sorts the lines,
#mapfile reads them back into the array
mapfile -t numbers < <(printf '%s\n' "${numbers[@]}" | sort -n)
#numbers is (2 3 5 7 11)
echo "numbers is (${numbers[*]})"

#without -n the sorting is by text: "11" goes before "2"
mapfile -t asText < <(printf '%s\n' "${numbers[@]}" | sort)
#asText is (11 2 3 5 7)
echo "asText is (${asText[*]})"

#descending
mapfile -t numbers < <(printf '%s\n' "${numbers[@]}" | sort -nr)
#numbers is (11 7 5 3 2)
echo "numbers is (${numbers[*]})"

#pairs "letter:number": -t sets the separator, -k the field to sort by
items=("B:3" "A:2" "C:1")
mapfile -t items < <(printf '%s\n' "${items[@]}" | sort -t ':' -k 1,1)
#items is ("A:2" "B:3" "C:1")
echo "items is (${items[*]})"

mapfile -t items < <(printf '%s\n' "${items[@]}" | sort -t ':' -k 2,2nr)
#items is ("B:3" "A:2" "C:1")
echo "items is (${items[*]})"