Awk कमांड के साथ शुरू करना
Awk एक शक्तिशाली डेटा प्रोसेसिंग प्रोग्रामिंग भाषा है जो लगभग हर * निक्स सिस्टम में बनाई गई है। यह सतह पर एक सामान्य उद्देश्य प्रोग्रामिंग भाषा की तरह दिखता है, लेकिन यह उस इनपुट के आधार पर इनपुट लेने और चलाने के लिए बनाया गया है। यदि आपको कुछ स्थितियों के आधार पर पाठ को संसाधित करने की आवश्यकता है, तो हमेशा सामान्य रूप से सी जैसी सामान्य प्रयोजन भाषा की तुलना में नौकरी अधिक तेज़ी से प्राप्त की जाएगी। यह भी व्याख्या की गई है, इसलिए आप संकलित भाषाओं की लंबी हवा वाली संकलन और डीबगिंग प्रक्रिया से बचें।
अतिरिक्त मजेदार तथ्य : कार्यक्रम का अजीब नाम अपने प्रोग्रामर के नामों का प्रारंभिक है: अल्फ्रेड ए हो, पीटर डब्ल्यू इनबर्गर, और ब्रायन के ernighan
Awk का मूल वाक्यविन्यास
कमांड लाइन पर आवेदित होने पर, नीचे मूलभूत पैटर्न का पालन करता है:
पैटर्न {action} फ़ाइल पैटर्न {action} फ़ाइल ...
जब भी निर्दिष्ट फ़ाइल में पैटर्न मिलान किया जाता है तो Awk कार्रवाई निष्पादित करेगा। यदि आप फ़ाइल निर्दिष्ट नहीं करते हैं, तो मानक आउटपुट पर अजीब चलेंगे। मिलान पैटर्न जब, नियमित रूप से अभिव्यक्ति के साथ ही प्रोग्रामेटिक इनपुट ले सकते हैं। आइए नीचे इस मूल उदाहरण पर विचार करें:
awk '/ com / {print $ 0}' ईमेल
यह एक-लाइन प्रोग्राम प्रत्येक ईमेल को "ईमेल" फ़ाइल से प्रिंट करेगा जिसमें वर्ण com
। अजीब $0
में वर्तमान रेखा को संदर्भित किया जाता है, जो डिफ़ॉल्ट व्यवहार भी है। लाइन $0,
बिना लिखी जा सकती थी $0,
और यह समान रूप से काम करता।
प्रिंटिंग फ़ील्ड
चूंकि अजीब फ़ील्ड सेपरेटर्स को पहचान और पार्स कर सकता है, इसलिए यह विशिष्ट कॉलम या डेटा की पंक्तियों को प्रिंट करने के लिए उपयोगी है। हम इस उदाहरण के लिए "/ etc / passwd" फ़ाइल का उपयोग करेंगे।
awk -F ":" '{प्रिंट $ 1}' / etc / passwd
यह एक-पंक्ति कार्यक्रम कुछ चीजें करता है। ध्वज- -F
इंगित करता है कि अगला चरित्र ( :
इस उदाहरण में) को क्षेत्र विभाजक के रूप में व्याख्या किया जाना चाहिए। Awk उन्हें पहले फ़ील्ड प्रिंट करता है, $1
द्वारा निर्दिष्ट।
अनुक्रमिक रूप से फ़ील्ड निर्दिष्ट करके हम एक समय में एक से अधिक फ़ील्ड प्रिंट भी कर सकते हैं:
awk -F ":" '{$ 4 प्रिंट करें "" $ 5}' / etc / passw
यह आउटपुट का उत्पादन करेगा जो निम्न जैसा दिखता है।
यह passwd
फ़ाइल के चौथे और पांचवें फ़ील्ड को उनके बीच एक स्थान के साथ प्रिंट करता है। ध्यान दें कि अंतरिक्ष डबल कोट्स के बीच है। यह इसे प्रिंट कमांड के भीतर एक शाब्दिक चरित्र के रूप में निर्दिष्ट करता है, इसलिए इसे लिखित के रूप में मुद्रित किया जाता है। हम अपने आउटपुट को साफ करने के लिए और अधिक जटिल साहित्य भी जोड़ सकते हैं:
awk -F ":" '{print "प्रक्रिया:" $ 5 "\ t \ t" "निर्देशिका:" $ 6}' / etc / passwd
यह पहचान के लिए लेबल के साथ आउटपुट मुद्रित करेगा। और हम इसे कैरेट (>) का उपयोग करके एक नई फाइल में आउटपुट कर सकते हैं।
awk -F ":" '{print "प्रक्रिया:" $ 5 "\ t \ t" "निर्देशिका:" $ 6}' / etc / passwd> process.txt
हम डेटा को बड़े पैमाने पर संसाधित करने के लिए अब तक जो कुछ भी जानते हैं, उसे जोड़ सकते हैं। उदाहरण के लिए, हम एक दस्तावेज़ से सभी लाइनों को मुद्रित करने के लिए नियमित अभिव्यक्तियों का उपयोग कर सकते हैं जिनमें वैध यूएस फोन नंबर है।
अजीब '/^(\+\d{1, 2}\s)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4 } $ / {प्रिंट} 'संपर्क
Awk कमांड की मिलान शक्ति का विस्तार
Awk विभिन्न प्रकार के ऑपरेटरों का उपयोग कर जानकारी को संसाधित भी कर सकता है। इसमें मानक ऑपरेटरों जैसे ==
, <
, >
, <=
, >=
, और !=
, साथ ही अजीब-विशिष्ट ऑपरेंड ~
और !~,
अर्थ है !~,
जिसका अर्थ क्रमशः "मैचों" और "मेल नहीं खाता" है। इन ऑपरेंड का उपयोग बूलियन तर्क के साथ नियमित अभिव्यक्तियों की तुलना करते समय, साथ ही अधिक मानक प्रोग्रामेटिक वाक्यांशों की तुलना में किया जाता है।
Awk कमांड उदाहरण
अजीब 'लंबाई ($ 0)> 80' डेटा
फ़ाइल "डेटा" में अस्सी अक्षरों से अधिक लंबी लाइनों को मुद्रित करता है। प्रिंट विवरण की कमी पर ध्यान दें: किसी निर्दिष्ट क्रिया की अनुपस्थिति में, जब भी कोई पैटर्न मेल खाता है तो पूर्ण लाइन प्रिंट करेगा।
$ 1 == "उपयोगकर्ता" {प्रिंट}
सभी पंक्तियों को मुद्रित करता है जहां पहला फ़ील्ड "उपयोगकर्ता" स्ट्रिंग के बराबर होता है। -F
ध्वज के बिना, अजीब सफेद क्षेत्र को डिफ़ॉल्ट फ़ील्ड विभाजक के रूप में उपयोग करेगा। साथ ही, ध्यान दें कि अजीब और फ़ाइल निर्दिष्ट नहीं है। यह अलग-अलग फ़ाइलों में स्क्रिप्ट में उपयोग के लिए है, जैसा कि नीचे कवर किया गया है।
$ 5 ~ / रूट / {प्रिंट $ 3}
जब भी पांचवां क्षेत्र नियमित अभिव्यक्ति /root/
से मेल खाता है तो तीसरे क्षेत्र को प्रिंट करता है।
{अगर ($ 5! ~ / रूट /) {प्रिंट $ 3}}
जब फ़ील्ड 5 मेल नहीं खाता /root/
प्रिंट फ़ील्ड तीन। यह सी-जैसे स्टेटमेंट का उपयोग करता है, जो अजीब के साथ भी संगत है। यह प्रारूप सामान्य प्रयोजन भाषाओं से परिचित प्रोग्रामर के लिए अधिक लचीलापन की अनुमति देता है।
फाइलों में लिपियों को सहेजना
Awk स्क्रिप्ट को उन फ़ाइलों में भी सहेजा जा सकता है जो आपको अधिक जटिल प्रोग्राम सहेजने की अनुमति देते हैं:
awk -f ~ / स्क्रिप्ट / program.awk डेटा
-f
ध्वज का उपयोग करते समय, awk निर्दिष्ट फ़ाइल पथ, अर्थात् program.awk
में स्क्रिप्ट चलाता है। उस प्रोग्राम में कमांड फाइल "डेटा" को संसाधित करेंगे।
कार्यक्रम और कार्यक्रम के पहले और बाद में क्रियाएं भी चलायी जा सकती हैं, BEGIN
और END
का उपयोग करके:
BEGIN {FS = ":"} # इंगित करता है कि: कार्यक्रम के लिए फ़ील्ड विभाजक है। # संचालन अंत {प्रिंट "आप कर चुके हैं"} # उपयोगकर्ता के लिए एक सुखद संदेश प्रिंट करता है
जैसा कि आप ऊपर देख सकते हैं, #
प्रतीक एक टिप्पणी शुरू करता है, जो रेखा के अंत तक चलता रहता है।
निष्कर्ष
यह गाइड केवल अजीब के सबसे बुनियादी तत्वों पर छूता है। इससे परे और निर्माण करने के लिए और भी बहुत कुछ है। अजीब या अवीक प्रोग्रामिंग भाषा के लिए जीएनयू दस्तावेज की जांच करें, और कार्यक्रम के डेवलपर्स द्वारा लिखित अजीब पाठ्यपुस्तक की जांच करें।