Как отсортировать ассоциативный массив в bash?Как сортировать ассоциативный массив bash-скрипт
Например, у меня есть массив в Баш:
[0,0]="Max"
[0,1]="25"
[1,0]="Vladimir"
[1,1]="0"
[2,0]="Mayki"
[2,1]="50"
Выход должен быть:
- Mayki - 50
- Max - 25
- Владимир - 0
Я не знаю, как сортировать этот массив.
Дополнительная информация: я анализирую ассоциативный массив из текстового файла («log.txt»)
#!/bin/bash
declare -A b_array
# Read the file in parameter and fill the array named "array"
getArray() {
i=0
w=9
count=10
while read line # Read a line
do
k=0
#array[i]=$line # Put it into the array
#b_array[$i,0]=$(grep -Eo "(http|https)://[a-zA-Z0-9./?=_-]*" <<<"$line")
for word in $line;
do
#echo $k;
#echo $word;
if [ "$k" = "$w" ]; then
if [ $word != "-" ]; then
b_array[$i]=$word
i=$(($i + 1))
fi
fi
k=$(($k + 1))
done
done < $1
}
getArray "log.txt"
Вы лучше использовать язык с лучшей поддержкой структуры данных. – chepner
Как выглядит вход? Что этот массив примеров имеет отношение к чему-либо? Вы не создаете такого типа (bash не может этого сделать). Кажется, у вас нет никого подобного на входе (хотя это совсем не ясно). Ассоциативные массивы не имеют порядка, поэтому лучше всего вы можете выбрать и отсортировать ключи, а затем перебрать этот отсортированный список ключей. –
Это моя домашняя работа Университета KPI –