AWK एक बहुत छोटी भाषा है और इसमें बस कुछ ही बुनियादी डेटा टाइप होते हैं। इस पाठ में हम संख्याओं और स्ट्रिंग के बारे में जानेंगे।
AWK में संख्याएँ डबल-प्रिसिजन फ्लोटिंग पॉइंट संख्याओं के रूप में लागू की गई हैं। पूर्णांक, दशमलव संख्या और डबल के बीच कोई अंतर नहीं है।
AWK ऑक्टल संख्या स्थिरांक (0 से शुरू होने वाले) और हेक्साडेसिमल संख्या स्थिरांक (0x या 0X से शुरू होने वाले) समझता है।
आप मानक अंकगणितीय ऑपरेटर +, -, *, /, % इस्तेमाल कर सकते हैं।
घात का ऑपरेटर ^ है।
कुछ बिल्ट-इन संख्यात्मक फंक्शन भी होते हैं, जिनमें त्रिकोणमितीय फंक्शन, यादृच्छिक संख्या निर्माण, और int(x) शामिल हैं, जो किसी संख्या को x और शून्य के बीच के निकटतम पूर्णांक तक काट देता है।
AWK की स्ट्रिंग अक्षरों का क्रम होती हैं। किसी स्ट्रिंग स्थिरांक को डबल कोट्स के बीच लिखा जाता है।
स्ट्रिंग पर सिर्फ एक ही ऑपरेशन होता है: जोड़ना। जोड़ने के लिए कोई खास ऑपरेटर नहीं है; दो स्ट्रिंग को बस एक-दूसरे के बगल में रख देने से वे जुड़ जाती हैं:
BEGIN {
hw = "Hello" "World"
print hw
}
# => HelloWorld
print एक स्टेटमेंट है, कोई फंक्शन नहीं।
print को ब्रैकेट लगाने की ज़रूरत नहीं होती।
AWK में स्ट्रिंग संभालने वाले ढेरों फंक्शन हैं। जैसे-जैसे हम ट्रैक में आगे बढ़ेंगे, हम इनसे विस्तार से परिचित होंगे।
संख्याओं और स्ट्रिंग के बीच बदलने के लिए कोई स्पष्ट ऑपरेटर नहीं हैं। AWK यह काम प्रोग्राम के संदर्भ के आधार पर अपने आप कर लेता है। इसी वजह से इनपुट फील्ड की वैल्यू के साथ काम करना बहुत आसान हो जाता है: AWK आम तौर पर वही करता है जो आप चाहते हैं।
print x + y + संख्यात्मक ऑपरेशन की वजह से x और y वेरिएबलो की वैल्यू को संख्याओं में बदल देगा।print x y जोड़ने वाले ऑपरेशन की वजह से x और y वेरिएबलो की वैल्यू को स्ट्रिंग में बदल देगा।अगर आप इसे स्पष्ट रूप से करना चाहें, तो 0 + x x का संख्या रूप देता है और "" x x का स्ट्रिंग रूप देता है।
AWK किसी स्ट्रिंग को संख्या में जिस तरह बदलता है, वह भ्रमित कर सकता है। इसे समझने का एक आसान तरीका यह है कि AWK स्ट्रिंग की शुरुआत से "संख्या वाले अक्षर" पढ़ता जाता है, जब तक उसे कोई "संख्या नहीं" वाला अक्षर न मिल जाए। कुछ उदाहरण:
"2.5" संख्या 2.5 में बदल जाता है;"1e3" संख्या 1000 में बदल जाता है (वैज्ञानिक संकेतन);"456abc" संख्या 456 में बदल जाता है (क्योंकि a कोई "अंक" नहीं है, इसलिए बदलाव वहीं रुक जाता है)।"abc789" संख्या 0 में बदल जाता है (स्ट्रिंग के शुरू में कोई संख्या ही नहीं है)।आप अपने एक दोस्त की मदद कर रहे हैं, जिसने अपने बगीचे के अलग-अलग कोनों से कुछ रीडिंग ली हैं, उनसे एक रिपोर्ट बनानी है। दुर्भाग्य से, आपके दोस्त ने डेटा को एक विचित्र फॉर्मेट में संग्रहीत किया है। हर रीडिंग कॉमा से अलग किए गए फील्ड का एक समूह है। लेकिन उसने दो अंकों की संख्याएँ दो कॉलमों में संग्रहीत की हैं।
| फील्ड संख्या | अर्थ |
|---|---|
| 1 | ID संख्या |
| 2 | स्थान |
| 3 | पहली रीडिंग, दहाई वैल्यू |
| 4 | पहली रीडिंग, इकाई वैल्यू |
| 5 | दूसरी रीडिंग, दहाई वैल्यू |
| 6 | दूसरी रीडिंग, इकाई वैल्यू |
101,house,4,2,5,4 जैसी इनपुट पंक्ति के लिए
42 है,54 है।आपको दोनों रीडिंग का औसत निकालना है और हर पंक्ति का परिणाम निम्नलिखित फॉर्मेट में देना है
#<id>, <label> = <average>
चूँकि 42 और 54 का औसत 48 है, नमूना पंक्ति का आउटपुट यह होना चाहिए:
#101, house = 48
Exercism पर साइन अप कीजिए और AWK को 3 कॉन्सेप्ट92 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।