AWK - मूल उदाहरण
इस अध्याय में कई उपयोगी AWK कमांड और उनके उपयुक्त उदाहरणों का वर्णन किया गया है। एक पाठ फ़ाइल पर विचार करेंmarks.txt निम्नलिखित सामग्री के साथ संसाधित किया जाना है -
1) Amit Physics 80
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89
मुद्रण स्तंभ या फ़ील्ड
आप AWK को इनपुट फ़ील्ड से केवल कुछ कॉलम प्रिंट करने के लिए निर्देश दे सकते हैं। निम्न उदाहरण यह प्रदर्शित करता है -
उदाहरण
[jerry]$ awk '{print $3 "\t" $4}' marks.txt
इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -
उत्पादन
Physics 80
Maths 90
Biology 87
English 85
History 89
फ़ाइल में marks.txt, तीसरे कॉलम में विषय का नाम होता है और चौथे कॉलम में किसी विशेष विषय में प्राप्त अंक होते हैं। हमें AWK प्रिंट कमांड का उपयोग करके इन दो कॉलम को प्रिंट करें। उपरोक्त उदाहरण में,$3 and $4 इनपुट रिकॉर्ड से क्रमशः तीसरे और चौथे क्षेत्र का प्रतिनिधित्व करते हैं।
मुद्रण सभी लाइनों
डिफ़ॉल्ट रूप से, AWK पैटर्न से मेल खाने वाली सभी लाइनों को प्रिंट करता है।
उदाहरण
[jerry]$ awk '/a/ {print $0}' marks.txt
इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -
उत्पादन
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89
उपरोक्त उदाहरण में, हम फॉर्म पैटर्न खोज रहे हैं a। जब एक पैटर्न मैच सफल होता है, तो यह बॉडी ब्लॉक से एक कमांड निष्पादित करता है। बॉडी ब्लॉक की अनुपस्थिति में - डिफ़ॉल्ट कार्रवाई की जाती है जो रिकॉर्ड को प्रिंट करती है। इसलिए, निम्न कमांड एक ही परिणाम उत्पन्न करता है -
उदाहरण
[jerry]$ awk '/a/' marks.txt
पैटर्न द्वारा मुद्रण कॉलम
जब एक पैटर्न मैच सफल होता है, तो AWK डिफ़ॉल्ट रूप से पूरे रिकॉर्ड को प्रिंट करता है। लेकिन आप AWK को केवल कुछ फ़ील्ड प्रिंट करने का निर्देश दे सकते हैं। उदाहरण के लिए, निम्न उदाहरण तीसरे और चौथे क्षेत्र को प्रिंट करता है जब एक पैटर्न मैच सफल होता है।
उदाहरण
[jerry]$ awk '/a/ {print $3 "\t" $4}' marks.txt
इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -
उत्पादन
Maths 90
Biology 87
English 85
History 89
किसी भी क्रम में मुद्रण स्तंभ
आप किसी भी क्रम में कॉलम प्रिंट कर सकते हैं। उदाहरण के लिए, निम्न उदाहरण चौथे कॉलम को प्रिंट करता है और उसके बाद तीसरा कॉलम।
उदाहरण
[jerry]$ awk '/a/ {print $4 "\t" $3}' marks.txt
उपरोक्त कोड निष्पादित करने पर, आपको निम्न परिणाम मिलते हैं -
उत्पादन
90 Maths
87 Biology
85 English
89 History
काउंटिंग और प्रिंटिंग मैचिंग पैटर्न
आइए एक उदाहरण देखें जहां आप उन पंक्तियों की संख्या को गिन और प्रिंट कर सकते हैं जिनके लिए एक पैटर्न मैच सफल हुआ।
उदाहरण
[jerry]$ awk '/a/{++cnt} END {print "Count = ", cnt}' marks.txt
इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -
उत्पादन
Count = 4
इस उदाहरण में, हम काउंटर के मूल्य को बढ़ाते हैं जब एक पैटर्न मैच सफल होता है और हम इस मूल्य को END ब्लॉक में प्रिंट करते हैं। ध्यान दें कि अन्य प्रोग्रामिंग भाषाओं के विपरीत, इसका उपयोग करने से पहले एक चर घोषित करने की आवश्यकता नहीं है।
18 से अधिक वर्णों के साथ मुद्रण लाइनें
आइए हम केवल उन पंक्तियों को प्रिंट करें जिनमें 18 से अधिक वर्ण हैं।
उदाहरण
[jerry]$ awk 'length($0) > 18' marks.txt
इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -
उत्पादन
3) Shyam Biology 87
4) Kedar English 85
AWK एक बिल्ट-इन प्रदान करता है length फ़ंक्शन जो स्ट्रिंग की लंबाई लौटाता है। $0चर संपूर्ण रेखा को संग्रहीत करता है और बॉडी ब्लॉक की अनुपस्थिति में, डिफ़ॉल्ट कार्रवाई की जाती है, अर्थात, प्रिंट कार्रवाई। इसलिए, यदि किसी रेखा में 18 से अधिक वर्ण हैं, तो तुलना परिणाम सही है और रेखा मुद्रित हो जाती है।