【发布时间】:2015-07-03 05:31:18
【问题描述】:
如何在 bash 中对关联数组进行排序?
例如,我在 bash 中有数组:
[0,0]="Max"
[0,1]="25"
[1,0]="Vladimir"
[1,1]="0"
[2,0]="Mayki"
[2,1]="50"
输出必须是:
- Mayki - 50
- 最大 - 25
- 弗拉基米尔 - 0
我不知道如何排序这个数组。
附加信息:我从文本文件(“log.txt”)解析 assoc 数组
#!/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"
【问题讨论】:
-
您最好使用具有更好数据结构支持的语言。
-
输入实际上是什么样的?该示例数组与任何内容有什么关系?你不是在创建一个这样的(bash 做不到)。您在输入中似乎没有这样的内容(尽管这根本不清楚)。关联数组没有顺序,因此您能做的最好的事情就是获取键并对其进行排序,然后遍历该排序的键列表。
-
这是我KPI大学的功课
-
原来的任务:我需要解析文件并按字节数显示10行查询。
-
这是使用关联数组的一种非常奇怪的方式。通常会使用名称作为键:
([Max]=25 [Mayki]=50 [Vladimir]=0)
标签: bash sorting associative