एक जागरण सरणी में सभी सामग्री कैसे देखें?


41

मेरी समझ में, awk अरेंज कुछ अजगर की तरह है।

इसलिए मैं इसे जानने के लिए कोड बाइल नीचे लिखता हूं:

awk '{my_dict[$1] = $2} END { print my_dict}' zen

और मुझे मिल गया: awk: can't read value of my_dict; it's an array name.

प्रथम कॉलम isn`ta संख्या के रूप में, मैं सरणी की कुल सामग्री को कैसे पढ़ सकता हूं या इसका पता लगा सकता हूं?

जवाबों:


60

आप सरणी की कुंजियों पर लूप कर सकते हैं और संबंधित मान निकाल सकते हैं:

awk '{my_dict[$1] = $2} END { for (key in my_dict) { print my_dict[key] } }' zen

इसके समान आउटपुट पाने के लिए आप पायथन शब्दकोश के साथ मिलेंगे, आप कुंजी को भी प्रिंट कर सकते हैं:

awk '{my_dict[$1] = $2} END { for (key in my_dict) { print key ": " my_dict[key] } }' zen

यह कुंजी प्रकार की परवाह किए बिना काम करता है।


14

यह सरणी के माध्यम से लूप करेगा:

END { for (i in my_dict) print my_dict[i] }

i सूचकांक है।


8

ऐरे में awkप्रथम श्रेणी की वस्तु नहीं है, जैसे शब्दकोश में Python। में awk, सबस्क्रिप्ट बिना सरणी नाम ही में उपयोग कर सकते हैं दो संदर्भ :

  • फ़ंक्शन परिभाषा या फ़ंक्शन कॉल में एक पैरामीटर।
  • कीवर्ड के बाद टोकन का नाम in

अन्य संदर्भ में, awkएक त्रुटि बढ़ाएगा।

forकिसी सरणी की सामग्री को प्रिंट करने और प्रिंट करने के लिए आपको एक लूप की आवश्यकता होती है:

$ echo 1 2 | awk '{my_dict[$1] = $2};END {for(i in my_dict) print my_dict[i]}'
2
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.