küresel sıralama seçeneği olarak rn kullanarak, @AndrewSchulman cevabını genişletme tüm sütunları tersine çevirir. Bu örnekte, aynı ilişkilendirici dizi değerine sahip yazarlar, adın tersi sırasına göre çıkarılacaktır. Örneğin belirli sütunları sıralamak için
declare -A authors
authors=([Pushkin]=10050 [Gogol]=23 [Dostoyevsky]=9999 [Tolstoy]=23)
for k in "${!authors[@]}"
do
echo $k ' - ' ${authors["$k"]}
done | sort -rn -k3
çıktısı
Pushkin - 10050
Dostoyevsky - 9999
Tolstoy - 23
Gogol - 23
Seçenek için
kolon belirtici sonra temin edilebilir. , yani sort -k3rn
Anahtarların açıklık olarak belirtilebileceğini unutmayın. -k3
, son açıklık olduğu için iyi olur, ancak yalnızca 3. sütunu açıkça kullanmak için (daha fazla sütun eklendiyse), -k3,3
, olarak belirtilmelidir. Benzer şekilde, sütun 3'e göre azalan sırada sıralanır ve sonra sütun (muhtemelen bu ne örnekte arzu edilir) artan sırada bir:
declare -A authors
authors=([Pushkin]=10050 [Gogol]=23 [Dostoyevsky]=9999 [Tolstoy]=23)
for k in "${!authors[@]}"
do
echo $k ' - ' ${authors["$k"]}
done | sort -k3,3rn -k1,1
irade çıkışı
Pushkin - 10050
Dostoyevsky - 9999
Gogol - 23
Tolstoy - 23
Bash 4,0 tuşları dizeleri olabilir ilişkilendirilebilir diziler ekler. –
Eh, ben ... sen haklısın. Sadece declare -A yazarların ihtiyacı var. –
Çözümünüz çalışıyor. Anlayabildiğim kadarıyla, sadece çıkış dizelerini, ilişkisel dizinin içeriğini değil, her neyse, üretilen çıktı, ihtiyacım olan şeydir. – Graf