@AndrewSchulman से जवाब का विस्तार, -rn एक वैश्विक प्रकार विकल्प के रूप में उपयोग करते हुए सभी स्तंभों को उलट देता है। इस उदाहरण में, एक ही सहयोगी सरणी मान वाले लेखक नाम के विपरीत क्रम से आउटपुट होंगे।
उदाहरण
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
इच्छा उत्पादन
Pushkin - 10050
Dostoyevsky - 9999
Tolstoy - 23
Gogol - 23
विशिष्ट स्तंभ छँटाई करने के लिए विकल्प के लिए स्तंभ विनिर्देशक के बाद प्रदान किया जा सकता। i.e.
sort -k3rn
ध्यान दें कि कुंजी को स्पैन के रूप में निर्दिष्ट किया जा सकता है। यहां -k3
ठीक होने वाला है क्योंकि यह अंतिम अवधि है, लेकिन केवल कॉलम 3 का उपयोग करने के लिए स्पष्ट रूप से (यदि आगे कॉलम जोड़े गए हैं), इसे -k3,3
, के रूप में निर्दिष्ट किया जाना चाहिए, इसी तरह कॉलम तीन को अवरोही क्रम में क्रमबद्ध करने के लिए, और फिर कॉलम आरोही क्रम में एक (जो शायद है क्या इस उदाहरण में वांछित है):
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
इच्छा उत्पादन
Pushkin - 10050
Dostoyevsky - 9999
Gogol - 23
Tolstoy - 23
बैश 4.0 साहचर्य सरणियों जहां कुंजी तार हो सकता है कहते हैं। –
ठीक है मैं ... आप सही हो। इसे सिर्फ 'घोषणाएं' लेखक की आवश्यकता है। –
आपका समाधान काम करता है। जहां तक मैं समझता हूं, यह सिर्फ आउटपुट स्ट्रिंग्स को टाइप करता है, न कि एसोसिएटिव सरणी की सामग्री, लेकिन वैसे भी, आउटपुट का उत्पादन मुझे चाहिए। – Graf