![CentOS, RHEL और Fedora पर वाइन 5.0 कैसे स्थापित करें?](/f/b3b75903cbb309019eade8bb8125c22b.png?width=100&height=100)
में भाग 8 का यह awk श्रृंखला, हमने कुछ शक्तिशाली Awk कमांड फीचर पेश किए, जो हैं चर, संख्यात्मक भाव और असाइनमेंट ऑपरेटर.
जैसे-जैसे हम आगे बढ़ेंगे, इस खंड में, हम और अधिक कवर करेंगे अक्कू विशेषताएं, और वह विशेष पैटर्न है: शुरू
तथा समाप्त
.
ये विशेष सुविधाएँ मददगार साबित होंगी क्योंकि हम विस्तार करने और परिसर के निर्माण के और तरीकों का पता लगाने की कोशिश करते हैं अक्कू संचालन।
आरंभ करने के लिए, आइए हम अपने विचारों को वापस के परिचय की ओर ले जाएं अक्कू श्रृंखला, याद रखें जब हमने इस श्रृंखला को शुरू किया था, मैंने बताया कि एक चल रहे एक का सामान्य वाक्यविन्यास अक्कू आदेश है:
# awk 'स्क्रिप्ट' फ़ाइल नाम
और उपरोक्त वाक्य रचना में, अक्कू स्क्रिप्ट का रूप है:
/पैटर्न/ {क्रियाएँ}
जब आप स्क्रिप्ट में पैटर्न पर विचार करते हैं, तो यह सामान्य रूप से एक नियमित अभिव्यक्ति है, इसके अतिरिक्त, आप पैटर्न को विशेष पैटर्न के रूप में भी सोच सकते हैं शुरू
तथा समाप्त
. इसलिए, हम एक भी लिख सकते हैं अक्कू नीचे दिए गए फॉर्म में कमांड:
awk 'BEGIN {क्रियाएँ} / पैटर्न / {क्रियाएँ} / पैटर्न / {क्रियाएँ} ………। END { क्रिया } ' फ़ाइल नाम
इस घटना में कि आप विशेष पैटर्न का उपयोग करते हैं: शुरू
तथा समाप्त
एक में अक्कू लिपि, उनमें से प्रत्येक का यही अर्थ है:
और an. के निष्पादन का प्रवाह अक्कू कमांड स्क्रिप्ट जिसमें ये विशेष पैटर्न शामिल हैं, इस प्रकार है:
शुरू
एक स्क्रिप्ट में पैटर्न का उपयोग किया जाता है, सभी क्रियाओं के लिए शुरू किसी भी इनपुट लाइन को पढ़ने से पहले एक बार निष्पादित किया जाता है।समाप्त
पैटर्न, कार्रवाई (ओं) को निष्पादित किया जाएगा।किसी में सर्वोत्तम परिणाम प्राप्त करने के लिए विशेष पैटर्न के साथ काम करते समय आपको निष्पादन के इस क्रम को हमेशा याद रखना चाहिए अक्कू कार्यवाही।
यह सब समझने के लिए, आइए हम से उदाहरण का उपयोग करके वर्णन करें भाग 8, के स्वामित्व वाले डोमेन की सूची के बारे में टेकमिंट, जैसा कि नाम की फ़ाइल में संग्रहीत है Domains.txt.
news.tecmint.com। टेकमिंट.कॉम. linuxsay.com. windows.tecmint.com। टेकमिंट.कॉम. news.tecmint.com। टेकमिंट.कॉम. linuxsay.com. टेकमिंट.कॉम. news.tecmint.com। टेकमिंट.कॉम. linuxsay.com. windows.tecmint.com। टेकमिंट.कॉम.
$ बिल्ली ~/domains.txt।
इस उदाहरण में, हम डोमेन की संख्या को गिनना चाहते हैं tecmint.com
फ़ाइल में सूचीबद्ध है Domains.txt. इसलिए हमने चरों, संख्यात्मक अभिव्यक्तियों और असाइनमेंट ऑपरेटरों के विचार का उपयोग करके ऐसा करने में हमारी सहायता के लिए एक छोटी शेल स्क्रिप्ट लिखी जिसमें निम्नलिखित सामग्री है:
#!/बिन/बैश। फ़ाइल के लिए [ईमेल संरक्षित]; करो अगर [-एफ $ फ़ाइल]; फिर #प्रिंट आउट फ़ाइल नाम इको "फ़ाइल है: $फ़ाइल" # tecmint.com awk '/^tecmint.com/ { काउंटर+=1; प्रिंटफ "%s\n", काउंटर; }' $file और #print त्रुटि जानकारी यदि इनपुट एक फ़ाइल नहीं है इको "$फ़ाइल एक फ़ाइल नहीं है, कृपया एक फ़ाइल निर्दिष्ट करें।" >&2 && 1 फाई से बाहर निकलें। किया हुआ। #सफल निष्पादन के मामले में एग्जिट कोड 0 के साथ स्क्रिप्ट को समाप्त करें।
आइए अब हम दो विशेष प्रतिरूपों का प्रयोग करें: शुरू
तथा समाप्त
में अक्कू उपरोक्त लिपि में आदेश निम्नानुसार है:
हम स्क्रिप्ट को बदल देंगे:
awk '/^tecmint.com/ { काउंटर+=1; प्रिंटफ "%s\n", काउंटर; }' $फ़ाइल.
प्रति:
अजीब ' शुरू { प्रिंट "फ़ाइल में tecmint.com कितनी बार दिखाई देता है:"; } /^tecmint.com/ { काउंटर+=1; } समाप्त { प्रिंटफ "%s\n", काउंटर; } ' $file.
में परिवर्तन करने के बाद अक्कू कमांड, पूरी शेल स्क्रिप्ट अब इस तरह दिखती है:
#!/बिन/बैश। फ़ाइल के लिए [ईमेल संरक्षित]; करो अगर [-एफ $ फ़ाइल]; फिर #प्रिंट आउट फ़ाइल नाम इको "फ़ाइल है: $फ़ाइल" #प्रिंट tecmint.com फ़ाइल awk में दिखाई देने की कुल संख्या ' शुरू { प्रिंट "फ़ाइल में tecmint.com कितनी बार दिखाई देता है:"; } /^tecmint.com/ { काउंटर+=1; } समाप्त { प्रिंटफ "%s\n", काउंटर; } ' $file और #print त्रुटि जानकारी यदि इनपुट एक फ़ाइल नहीं है इको "$फ़ाइल एक फ़ाइल नहीं है, कृपया एक फ़ाइल निर्दिष्ट करें।" >&2 && 1 फाई से बाहर निकलें। किया हुआ। #सफल निष्पादन के मामले में एग्जिट कोड 0 के साथ स्क्रिप्ट को समाप्त करें।
जब हम ऊपर स्क्रिप्ट चलाते हैं, तो यह सबसे पहले फाइल की लोकेशन प्रिंट करेगा Domains.txt, फिर अक्कू कमांड स्क्रिप्ट निष्पादित की जाती है, जहां शुरू
विशेष पैटर्न हमें संदेश का प्रिंट आउट लेने में मदद करता है "फ़ाइल में tecmint.com के प्रकट होने की संख्या है:
फ़ाइल से किसी भी इनपुट लाइन को पढ़ने से पहले।
फिर हमारा पैटर्न, /^tecmint.com/
प्रत्येक इनपुट लाइन और क्रिया के विरुद्ध तुलना की जाती है, {काउंटर+=1; }
प्रत्येक इनपुट लाइन के लिए निष्पादित किया जाता है, जो कई बार गिना जाता है tecmint.com
फ़ाइल में प्रकट होता है।
अंततः समाप्त
पैटर्न डोमेन की कुल संख्या को प्रिंट करेगा tecmint.com
फ़ाइल में प्रकट होता है।
$ ./script.sh ~/domains.txt
निष्कर्ष निकालने के लिए, हम और अधिक के माध्यम से चले गए अक्कू विशेष पैटर्न की अवधारणाओं पर खोज करने वाली विशेषताएं: शुरू
तथा समाप्त
.
जैसा कि मैंने पहले बताया, ये awk सुविधाएँ हमें और अधिक जटिल बनाने में मदद करेंगी पाठ फ़िल्टरिंग संचालन, के तहत कवर करने के लिए और भी बहुत कुछ है अक्कू सुविधाओं और में भाग 10, हम awk बिल्ट-इन वेरिएबल्स के विचार से संपर्क करेंगे, इसलिए जुड़े रहें।