2014-11-08 73 views
0
 
res[0]="b 9" 
res[1]="a 1" 
res[2]="c 10" 
printf -- '%s\n' "${res[@]}" 

我想排序它并按bash中的数字顺序显示数组。自定义排序bash阵列

 
a 1 
b 9 
c 10 

这是可能的吗?

回答

4

排序与sort

res[0]="b 9" 
res[1]="x 1" 
res[2]="c 10" 
printf -- '%s\n' "${res[@]}" | sort -k2 -n 

输出:

 
x 1 
b 9 
c 10 


数字排序不 sort

res[0]="b 9" 
res[1]="x 1" 
res[2]="c 10" 
new=()        # declare array new 

# copy array res to new and use second column as index 
for ((i=0;i<${#res[@]};i++)); do 
    new[${res[$i]#* }]=${res[$i]% *} 
done 

# print array new and use its index: ${!new[@]} 
for i in "${!new[@]}"; do 
    echo "${new[$i]} $i" 
done 

输出:

 
x 1 
b 9 
c 10