2013-04-18 3 views
5

में परिभाषित क्रम में किसी सरणी को मुद्रित करने के लिए कैसे करें, मैंने इसे गॉगल किया और पता चला कि एडब्ल्यूके 4.0 के बाद हम प्रोपिनोफ़ो ["sorted_in"] कमांड को लूप के ठीक पहले डालने के द्वारा परिभाषित क्रम में एक सरणी मुद्रित कर सकते हैं। उदाहरण के लिएAWK 3.1.3

PROCINFO["sorted_in"] = "@ind_num_asc" 
    for(i in array) 
      print i, array[i] 

एडब्ल्यूके 4.0.2 में, यह काम करता है। हालांकि, मैंने इसे एडब्ल्यूके 3.1.3 पर्यावरण में करने की कोशिश की, यह काम नहीं किया। क्या एडब्ल्यूके का यह प्रारंभिक संस्करण इस समारोह का समर्थन नहीं करता है? एडब्ल्यूके 3.1.3 में इस लक्ष्य को कैसे प्राप्त करें?

+0

एक सरणी – Laurijssen

+0

सॉर्ट करने के लिए asort/asorti देखें, नहीं, गैर-जीएनयू अजीब और गॉक के पुराने संस्करण इस कार्यक्षमता का समर्थन नहीं करते हैं। "परिभाषित आदेश" और "यह लक्ष्य" स्पष्ट करें। क्या आप एक विशिष्ट क्रम में एक सरणी मुद्रित करना चाहते हैं और यदि ऐसा है, तो ऑर्डर क्या है (पहले या संख्यात्मक क्रम या वर्णमाला क्रम या ...)? वैकल्पिक रूप से क्या आप प्रिंटिंग एरे के विभिन्न ऑर्डर को परिभाषित करने के लिए एक तंत्र की तलाश कर रहे हैं जैसे कि आप PROCINFO [] को पॉप्युलेट करके अपने उदाहरण में दिखाते हैं? –

उत्तर

4

संख्यात्मक मानकों और मानों के साथ पहली सरणी के लिए कुंजी के साथ एक दूसरी सरणी order रखें। इसके बाद आप अनुक्रम में order के माध्यम से पुनरावृति और array के मूल्य देख सकते हैं:

for (i = 1; i < length(order); i++) { 
    print order[i], array[order[i]] 
} 

जब order निर्माण, आप कुंजी पहले से मौजूद है कि क्या जांच करने के लिए array में, array की चाबी को रोकने के लिए चाहते हो सकता है कई दिखाया जा रहा है बार।

+0

3.1.3 में कोई "लंबाई" फ़ंक्शन नहीं है। श्री वेंटिमिग्लिया के फ़ंक्शन (मेरे विस्तार के साथ) http://stackoverflow.com/questions/9351902/how-can-i-get-the-length-of- an-array-in-awk/19411381 # 19411381 या केवल "ऑर्डर" के निर्माण पर उपयोग की गई अंतिम अनुक्रमणिका रखें। –