में एक साहचर्य सरणी मैं awk में एक साहचर्य सरणी है कि इस तरह आबादी वाले हो जाता है आश्चर्य की बात है, मैं आदेश किसी भी तरह से हल नहीं किया गया है। chr_count
की क्रमबद्ध कुंजी पर पुन: प्रयास करने का कोई आसान तरीका है?क्रमबद्ध awk
उत्तर
asort के बजाय , asorti(source, destination)
जो एक नई सरणी में सूचकांक क्रमबद्ध करता का उपयोग करें और आप सरणी की प्रतिलिपि करने के लिए नहीं होगा।
फिर आप गंतव्य सरणी को पॉइंटर्स के रूप में स्रोत सरणी में उपयोग कर सकते हैं।
अपने उदाहरण के लिए, आप इसे इस तरह का प्रयोग करेंगे:
n=asorti(chr_count, sorted)
for (i=1; i<=n; i++) {
print sorted[i] " : " chr_count[sorted[i]]
}
वाह, दस्तावेजों में इसे ठीक से पढ़ने के बावजूद पूरी तरह से भूल गए। यह निश्चित रूप से बेहतर जवाब है। – Cascabel
+1 शानदार !!! –
'asorti' nawk-20121220-2.fc20.x86_64 के साथ काम नहीं करता है। –
यह the documentation से सीधे लिया जाता है:
populate the array data
# copy indices
j = 1
for (i in data) {
ind[j] = i # index value becomes element value
j++
}
n = asort(ind) # index values are now sorted
for (i = 1; i <= n; i++) {
do something with ind[i] Work with sorted indices directly
...
do something with data[ind[i]] Access original array via sorted indices
}
देखें, यह समाधान त्रुटिपूर्ण है क्योंकि यह खोने वाली कुंजी को समाप्त करता है जिसमें मूल सरणी में समान मान होते हैं। इस अन्य धागे से स्वीकार्य समाधान के बारे में एक विचार है कि इसे कैसे कार्य करना है: http://stackoverflow.com/a/5345056/95750 – haridsv
@haridsv नहीं, मुझे ऐसा नहीं लगता है।यह प्रश्न कुंजी द्वारा क्रमबद्ध करने के बारे में है, मूल्यों के नहीं, और एक ही कुंजी के लिए दो मान नहीं हो सकते हैं, इसलिए यहां कोई समस्या नहीं है। आप जिस दूसरे प्रश्न को इंगित करते हैं वह मानों द्वारा क्रमबद्ध करने के बारे में है (जो वास्तव में सभी अलग नहीं हो सकते हैं), इसलिए यदि आपने इसके लिए इस कोड का उपयोग करने का प्रयास किया है, तो यह एक समस्या होगी। लेकिन अगर आप इसके लिए लिखे गए कार्यों के लिए इसका इस्तेमाल करते हैं तो यह त्रुटिपूर्ण नहीं है। – Cascabel
माफ़ी .. मैं इंडेक्सिंग कोड को "फ़्लिपिंग" कुंजी/मानों के रूप में गलत तरीके से पढ़ता हूं, लेकिन इसे फिर से पढ़ने के बाद, मैंने देखा है कि आप लगातार बढ़ते नंबर का उपयोग इंडेक्स के रूप में कर रहे हैं, मूल मूल्य नहीं। वापस पाने और इसे स्पष्ट करने के लिए धन्यवाद। – haridsv
ध्यान दें कि asort()
और asorti()
घूर रहा विशिष्ट हैं, और awk के लिए अज्ञात हैं। सादा अजीब के लिए, आप अपना खुद का sort()
रोल कर सकते हैं या कहीं और से एक प्राप्त कर सकते हैं।
आप सॉर्ट कमांड का उपयोग कर सकते हैं। जैसे
for (i in data)
print i ":", data[i] | "sort"
मैं हाल ही में इस मुद्दे में आए और पाया gawk साथ मैं यात्रा के क्रम को नियंत्रित करने के PROCINFO["sorted_in"]
का मान सेट कर सकते हैं। मैं ऑनलाइन PROCINFO के लिए खोज के द्वारा इस के लिए मान्य मानों की सूची मिल गया है और यह जीएनयू Awk उपयोगकर्ता मार्गदर्शिका पेज पर उतरा: https://www.gnu.org/software/gawk/manual/html_node/Controlling-Scanning.html
इस के साथ सूचीबद्ध करता प्रपत्र @{key|val}_{num|type|str}_{asc|desc}
का विकल्प:
key
कुंजी औरval
द्वारा छँटाई मूल्य से छंटनी।num
संख्यात्मक रूप से क्रमबद्ध,str
स्ट्रिंग द्वाराtype
असाइन किए गए प्रकार से।asc
आरोही क्रम के लिए औरdesc
अवरोही क्रम के लिए।
मैं बस प्रयोग किया है:
PROCINFO["sorted_in"] = "@val_num_desc"
for (i in map) print i, map[i]
और उत्पादन मूल्यों के घटते क्रम में क्रमबद्ध किया गया था।
- 1. awk
- 2. awk
- 3. awk
- 4. awk
- 5. awk
- 6. awk
- 7. Awk, शून्य
- 8. awk कमांड
- 9. sed/awk capitalize स्ट्रिंग्स
- 10. एक्सट्रपलेशन - आधारित AWK
- 11. Awk रिक्त लाइनों
- 12. awk प्रिंट लाइन
- 13. बैश/awk/sed/perl
- 14. AWK परिणाम को वैरिएबल
- 15. sed या awk multiline
- 16. Awk क्षेत्र विभाजक व्यवहार
- 17. एक .awk फ़ाइल कैसे चलाएं?
- 18. क्रमबद्ध सरणी (प्राकृतिक क्रमबद्ध)
- 19. क्रमबद्ध
- 20. निकालें लाइन्स जब स्तंभ कश्मीर AWK/पर्ल
- 21. खोल में एक बाइनरी फ़ाइल (खोल, awk)
- 22. awk गणना संख्या और उसके अनुसार
- 23. sed/awk: टेक्स्ट स्ट्रीम से पैटर्न निकालें
- 24. प्रिंटिंग वर्बोज़ प्रगति से sed और awk
- 25. AWK: की जगह और इनपुट फ़ाइल
- 26. awk औसत की गणना या शून्य
- 27. उपयोग awk बहु लाइन रिकॉर्ड और छानने
- 28. समस्याओं एंड्रॉयड NDK-7 और AWK
- 29. कैसे AWK बनाने के लिए बैश स्क्रिप्ट
- 30. क्रमबद्ध सेट
http://stackoverflow.com/a/5345056/69663 देखें - यदि आपके पास गॉक 4 है, तो PROCINFO ["sorted_in"] = "@val_num_asc" आदि का उपयोग करना बहुत आसान है। यदि आप उतरते/चढ़ते हैं, मूल्य/कुंजी, संख्यात्मक/कड़ाई से, अपना स्वयं का फ़ंक्शन इत्यादि: मैन्युअल कई अलग-अलग विकल्पों को दिखाता है: https://www.gnu.org/software/gawk/manual/html_node/Controlling- स्कैनिंग – unhammer