Computer >> कंप्यूटर >  >> प्रणाली >> Linux

AWK कमांड और स्क्रिप्ट कैसे लिखें

awk कमांड टेक्स्ट फाइलों को प्रोसेस करने या उनका विश्लेषण करने का एक शक्तिशाली तरीका है। विशेष रूप से, यह डेटा फ़ाइलों का विश्लेषण करता है जो लाइनों (पंक्तियों) और स्तंभों द्वारा व्यवस्थित होते हैं। साधारण awk कमांड को कमांड लाइन से चलाया जा सकता है। अधिक जटिल कार्यों को एक फ़ाइल में awk प्रोग्राम (जिसे awk स्क्रिप्ट कहा जाता है) के रूप में लिखा जाना चाहिए।

AWK कमांड और स्क्रिप्ट कैसे लिखें

AWK मूल बातें

awk कमांड का मूल प्रारूप इस तरह दिखता है:

awk 'पैटर्न {action}' इनपुट-फाइल> आउटपुट-फाइल

इसका अर्थ है:इनपुट फ़ाइल की प्रत्येक पंक्ति लें; यदि रेखा में पैटर्न है, तो क्रिया को रेखा पर लागू करें और परिणामी रेखा को आउटपुट फ़ाइल में लिखें। यदि पैटर्न को छोड़ दिया जाता है, तो क्रिया सभी पंक्तियों पर लागू होती है। उदाहरण के लिए:

awk '{print $5 }' table1.txt> output1.txt

उपरोक्त कथन प्रत्येक पंक्ति के 5वें स्तंभ के तत्व को लेता है और इसे आउटपुट फ़ाइल "output.txt" में एक पंक्ति के रूप में लिखता है। चर '$4' चौथे कॉलम को दर्शाता है। इसी तरह, आप $1, $2, $3, आदि के साथ पहले, दूसरे और तीसरे कॉलम तक पहुंच सकते हैं। डिफ़ॉल्ट रूप से, कॉलम को रिक्त स्थान या टैब (तथाकथित सफेद स्थान) से अलग माना जाता है। इसलिए, यदि इनपुट फ़ाइल "table1.txt" में ये पंक्तियाँ हैं:

1, जस्टिन टिम्बरलेक, शीर्षक 545, मूल्य $7.30
2, टेलर स्विफ्ट, शीर्षक 723, मूल्य $7.90
3, मिक जैगर, शीर्षक 610, मूल्य $7.90
4, लेडी गागा, शीर्षक 118, मूल्य $7.30
5, जॉनी कैश, शीर्षक 482, मूल्य $6.50
6, एल्विस प्रेस्ली, शीर्षक 335, मूल्य $7.30
7, जॉन लेनन, शीर्षक 271, मूल्य $7.90
8, माइकल जैक्सन, शीर्षक 373, कीमत $5.50

तब कमांड आउटपुट फ़ाइल "output1.txt" में निम्न पंक्तियाँ लिखेगा:

545,
723,
610,
118,
482,
335,
271,
373,

यदि कॉलम सेपरेटर रिक्त स्थान या टैब के अलावा कुछ और है, जैसे अल्पविराम, तो आप इसे awk स्टेटमेंट में निम्नानुसार निर्दिष्ट कर सकते हैं:

awk -F, '{print $3 }' table1.txt> output1.txt

यह प्रत्येक पंक्ति के कॉलम 3 से तत्व का चयन करेगा यदि कॉलम को अल्पविराम से अलग माना जाता है। इसलिए इस मामले में आउटपुट होगा:

शीर्षक 545
शीर्षक 723
शीर्षक 610
शीर्षक 118
शीर्षक 482
शीर्षक 335
शीर्षक 271
शीर्षक 373

AWK में सशर्त अभिव्यक्तियाँ

कर्ली ब्रैकेट्स ('{','}') के अंदर स्टेटमेंट्स की लिस्ट को ब्लॉक कहा जाता है। अगर आप किसी ब्लॉक के सामने कंडीशनल एक्सप्रेशन रखते हैं, तो ब्लॉक के अंदर का स्टेटमेंट तभी निष्पादित होगा जब कंडीशन सही होगी।

awk '$7=="\$7.30" { प्रिंट $3 }' table1.txt

इस मामले में, शर्त $7=="\$7.30" है, जिसका अर्थ है कि कॉलम 7 में तत्व $7.30 के बराबर है। डॉलर चिह्न के सामने बैकस्लैश का उपयोग सिस्टम को $7 को एक चर के रूप में व्याख्या करने से रोकने के लिए किया जाता है और इसके बजाय डॉलर चिह्न को शाब्दिक रूप से लिया जाता है।

तो यह awk स्टेटमेंट प्रत्येक पंक्ति के तीसरे कॉलम में तत्व को प्रिंट करता है जिसमें कॉलम 7 में "$7.30" है।

आप शर्त के रूप में नियमित अभिव्यक्तियों का भी उपयोग कर सकते हैं। उदाहरण के लिए:

awk '/30/ {प्रिंट $3}' table1.txt

दो स्लैश ('/') के बीच की स्ट्रिंग रेगुलर एक्सप्रेशन है। इस मामले में, यह केवल "30" स्ट्रिंग है। इसका मतलब है कि यदि किसी पंक्ति में "30" स्ट्रिंग है, तो सिस्टम उस पंक्ति के तीसरे कॉलम में तत्व को प्रिंट करता है। उपरोक्त उदाहरण में आउटपुट होगा:

टिम्बरलेक,
गागा,
प्रेस्ली,

AWK में परिकलन करें

यदि तालिका तत्व संख्याएं हैं, तो awk इस उदाहरण के अनुसार उन पर गणना चला सकते हैं:

awk '{ प्रिंट ($2 * $3) + $7}'

वर्तमान पंक्ति ($1, $2, आदि) के तत्वों तक पहुँचने वाले चरों के अलावा, चर $0 है जो पूर्ण पंक्ति (लाइन) को संदर्भित करता है, और चर NF जो फ़ील्ड की संख्या को धारण करता है।

आप इस उदाहरण में नए चर भी परिभाषित कर सकते हैं:

awk '{ sum=0; के लिए (col=1; col<=NF; col++) योग +=$col; प्रिंट राशि; }'

यह प्रत्येक पंक्ति के सभी तत्वों के योग की गणना और प्रिंट करता है।

awk स्टेटमेंट को अक्सर sed कमांड के साथ जोड़ा जाता है।


  1. लिनक्स में विंडोज पार्टिशन में कैसे लिखें

    यदि आप विंडोज और लिनक्स को डुअल-बूट कर रहे हैं, तो आपने देखा होगा कि जब आप लिनक्स से एनटीएफएस विभाजन माउंट करते हैं, तो कभी-कभी आप इसे नहीं लिख सकते हैं। आप वहां मौजूद कुछ भी पढ़ सकते हैं, लेकिन आप फाइलों को हटा नहीं सकते, उनका नाम नहीं बदल सकते, उन्हें संशोधित नहीं कर सकते या नई फाइलें और निर्देशिक

  1. बेसिक क्रोम एक्सटेंशन कैसे लिखें और बनाएं

    क्रोम ग्रह पर आसानी से सबसे लोकप्रिय वेब ब्राउज़र है। स्टेटकाउंटर के डेस्कटॉप ब्राउजर मार्केट शेयर सर्वे के मुताबिक, क्रोम 2017 के अंत तक डेस्कटॉप ब्राउजर में बाजार का 65% हिस्सा ले चुका है। उस प्रकार की बाज़ार-परिभाषित शक्ति के साथ, Chrome के लिए डिज़ाइन करना प्राथमिकता बन गया है। एक्सटेंशन के लिए

  1. iOS 13 में एनएफसी टैग का उपयोग, पढ़ने और लिखने का तरीका

    स्मार्टफोन के नवीनतम संस्करणों के साथ, एनएफसी वह सुविधा है जो एक फोन से दूसरे फोन में जानकारी स्थानांतरित करने में मदद कर सकती है। एनएफसी नियर फील्ड कम्युनिकेशन का संक्षिप्त नाम है। यह एक वायरलेस कनेक्शन है जिसका उपयोग स्मार्टफोन से जानकारी स्थानांतरित करने के लिए किया जा सकता है। यह सुविधा उत्पादो