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 से अधिक वर्ण हैं, तो तुलना परिणाम सही है और रेखा मुद्रित हो जाती है।