2014-11-08 74 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