Linux पर awk कमांड का उपयोग कैसे करें
फातमावती अचमद ज़ैनुरी / शटरस्टॉक
लिनक्स पर |_+_| एक कमांड-लाइन टेक्स्ट मैनिपुलेशन डायनेमो है, साथ ही एक शक्तिशाली स्क्रिप्टिंग भाषा भी है। यहां इसकी कुछ बेहतरीन विशेषताओं का परिचय दिया गया है।
सम्बंधित: शुरुआती के लिए 10 बुनियादी लिनक्स कमांड
इसका नाम कितना अजीब है
|_+_| 1977 में मूल संस्करण लिखने वाले तीन लोगों के आद्याक्षर का उपयोग करके कमांड का नाम दिया गया था: अल्फ्रेड अहो , पीटर वेनबर्गर , तथा ब्रायन कर्निघन . ये तीन आदमी दिग्गज से थे एटी एंड टी बेल लेबोरेटरीज यूनिक्स पेंथियन। तब से कई अन्य लोगों के योगदान से |_+_| विकसित करना जारी रखा है।
यह एक पूर्ण स्क्रिप्टिंग भाषा है, साथ ही कमांड लाइन के लिए एक पूर्ण टेक्स्ट मैनिपुलेशन टूलकिट है। यदि यह लेख आपकी भूख बढ़ाता है, तो आप कर सकते हैं हर विवरण की जाँच करें के बारे में |_+_| और इसकी कार्यक्षमता।
नियम, पैटर्न और कार्य
|_+_| उन कार्यक्रमों पर काम करता है जिनमें पैटर्न और क्रियाओं से युक्त नियम होते हैं। पैटर्न से मेल खाने वाले टेक्स्ट पर कार्रवाई की जाती है। पैटर्न घुंघराले ब्रेसिज़ (|_+_|) में संलग्न हैं। एक पैटर्न और एक क्रिया एक साथ मिलकर एक नियम बनाते हैं। संपूर्ण |_+_| कार्यक्रम सिंगल कोट्स (|_+_|) में संलग्न है।
आइए एक नज़र डालते हैं |_+_| . के सबसे सरल प्रकार पर कार्यक्रम। इसका कोई पैटर्न नहीं है, इसलिए यह इसमें फीड किए गए टेक्स्ट की हर लाइन से मेल खाता है। इसका मतलब है कि कार्रवाई हर लाइन पर की जाती है। कुंआ से आउटपुट पर इसका इस्तेमाल करें |_+_| आदेश।
यहाँ से मानक आउटपुट है |_+_|:
awk
विज्ञापन
शायद हमें उस सारी जानकारी की ज़रूरत नहीं है, बल्कि, केवल खातों पर नाम देखना चाहते हैं। हम आउटपुट को |_+_| . से पाइप कर सकते हैं में |_+_|, और फिर बताएं |_+_| केवल पहले फ़ील्ड को प्रिंट करने के लिए।
डिफ़ॉल्ट रूप से, |_+_| एक फ़ील्ड को रिक्त स्थान, एक पंक्ति की शुरुआत, या एक पंक्ति के अंत से घिरे वर्णों की एक स्ट्रिंग के रूप में मानता है। फ़ील्ड की पहचान डॉलर चिह्न (|_+_|) और एक संख्या द्वारा की जाती है। तो, |_+_| पहले फ़ील्ड का प्रतिनिधित्व करता है, जिसका उपयोग हम |_+_| . के साथ करेंगे पहले फ़ील्ड को प्रिंट करने की क्रिया।
हम निम्नलिखित टाइप करते हैं:
awk
|_+_| पहले फ़ील्ड को प्रिंट करता है और शेष पंक्ति को छोड़ देता है।
हम जितने चाहें उतने फ़ील्ड प्रिंट कर सकते हैं। यदि हम विभाजक के रूप में अल्पविराम जोड़ते हैं, |_+_| प्रत्येक फ़ील्ड के बीच एक स्थान प्रिंट करता है।
व्यक्ति द्वारा लॉग इन किए गए समय को प्रिंट करने के लिए हम निम्नलिखित टाइप करते हैं (फ़ील्ड चार):
awk
कुछ विशेष फ़ील्ड पहचानकर्ता हैं। ये टेक्स्ट की पूरी लाइन और टेक्स्ट की लाइन में आखिरी फील्ड का प्रतिनिधित्व करते हैं:
- शेल को बताएं कि स्क्रिप्ट को चलाने के लिए किस निष्पादन योग्य का उपयोग करना है।
- तैयार करें |_+_| |_+_| . का उपयोग करने के लिए फ़ील्ड विभाजक चर कोलन (|_+_|) द्वारा अलग किए गए फ़ील्ड के साथ इनपुट टेक्स्ट पढ़ने के लिए।
- |_+_| . का प्रयोग करें आउटपुट फ़ील्ड विभाजक बताने के लिए |_+_| आउटपुट में फ़ील्ड को अलग करने के लिए कोलन (|_+_|) का उपयोग करने के लिए।
- एक काउंटर को 0 (शून्य) पर सेट करें।
- पाठ की प्रत्येक पंक्ति के दूसरे क्षेत्र को रिक्त मान पर सेट करें (यह हमेशा एक x होता है, इसलिए हमें इसे देखने की आवश्यकता नहीं है)।
- संशोधित दूसरी फ़ील्ड के साथ लाइन प्रिंट करें।
- काउंटर बढ़ाएँ।
- काउंटर का मूल्य प्रिंट करें।
- & rsaquo; Linux पर whois कमांड का उपयोग कैसे करें
- › 5 वेबसाइटें हर लिनक्स उपयोगकर्ता को बुकमार्क करनी चाहिए
- › अपना Spotify रैप्ड 2021 कैसे खोजें
- › कंप्यूटर फोल्डर 40 है: जेरोक्स स्टार ने डेस्कटॉप कैसे बनाया
- › Microsoft Excel में फ़ंक्शन बनाम सूत्र: क्या अंतर है?
- & rsaquo; साइबर मंडे 2021: बेस्ट टेक डील
- & rsaquo; साइबर मंडे 2021: बेस्ट एप्पल डील
हम एक छोटी टेक्स्ट फ़ाइल लाने के लिए निम्नलिखित टाइप करेंगे जिसमें एक छोटा उद्धरण शामिल होगा डेनिस रिची :
awk
हम चाहते हैं |_+_| कोट के पहले, दूसरे और अंतिम क्षेत्र को प्रिंट करने के लिए। ध्यान दें कि यद्यपि यह टर्मिनल विंडो में चारों ओर लिपटा हुआ है, यह टेक्स्ट की केवल एक पंक्ति है।
हम निम्नलिखित कमांड टाइप करते हैं:
awk
हम उस सादगी को नहीं जानते। पाठ की पंक्ति में 18वां क्षेत्र है, और हमें परवाह नहीं है। हम जो जानते हैं वह अंतिम क्षेत्र है, और हम इसका उपयोग कर सकते हैं |_+_| इसका मूल्य प्राप्त करने के लिए। क्षेत्र के शरीर में अवधि को सिर्फ एक और चरित्र माना जाता है।
आउटपुट फील्ड सेपरेटर्स जोड़ना
आप यह भी बता सकते हैं |_+_| डिफ़ॉल्ट स्पेस कैरेक्टर के बजाय फ़ील्ड्स के बीच एक विशेष कैरेक्टर को प्रिंट करने के लिए। |_+_| . से डिफ़ॉल्ट आउटपुट आदेश थोड़ा अजीब है क्योंकि समय ठीक इसके बीच में है। हालांकि, हम निम्नलिखित टाइप कर सकते हैं और उपयोग कर सकते हैं |_+_| हम चाहते हैं कि फ़ील्ड निकालने के लिए:
{}
awk
हम |_+_| . का उपयोग करेंगे (आउटपुट फ़ील्ड सेपरेटर) चर महीने, दिन और वर्ष के बीच विभाजक लगाने के लिए। ध्यान दें कि नीचे हम कमांड को सिंगल कोट्स (|_+_|) में संलग्न करते हैं, न कि कर्ली ब्रेसिज़ (|_+_|):
'
awk
BEGIN और END नियम
ए |_+_| किसी भी टेक्स्ट प्रोसेसिंग के शुरू होने से पहले नियम को एक बार निष्पादित किया जाता है। वास्तव में, इसे |_+_| . से पहले निष्पादित किया जाता है यहां तक कि कोई टेक्स्ट भी पढ़ता है। एक |_+_| सभी प्रसंस्करण पूर्ण होने के बाद नियम निष्पादित किया जाता है। आपके पास एकाधिक हो सकते हैं |_+_| और |_+_| नियम, और वे क्रम में निष्पादित करेंगे।
विज्ञापनएक |_+_| . के हमारे उदाहरण के लिए नियम, हम पूरी बोली को |_+_| . से प्रिंट करेंगे फ़ाइल जिसे हमने पहले इसके ऊपर एक शीर्षक के साथ उपयोग किया था।
ऐसा करने के लिए, हम यह कमांड टाइप करते हैं:
who
नोट करें |_+_| नियम के अपने स्वयं के कर्ली ब्रेसिज़ (|_+_|) के सेट के भीतर संलग्न क्रियाओं का अपना सेट है।
हम इसी तकनीक का उपयोग उस कमांड के साथ कर सकते हैं जिसका उपयोग हमने पहले |_+_| . से आउटपुट को पाइप करने के लिए किया था में |_+_|. ऐसा करने के लिए, हम निम्नलिखित टाइप करते हैं:
who
इनपुट फील्ड सेपरेटर्स
अगर आप चाहते हैं |_+_| ऐसे टेक्स्ट के साथ काम करने के लिए जो फ़ील्ड को अलग करने के लिए व्हाइटस्पेस का उपयोग नहीं करता है, आपको यह बताना होगा कि टेक्स्ट किस कैरेक्टर को फ़ील्ड सेपरेटर के रूप में उपयोग करता है। उदाहरण के लिए |_+_| फ़ाइल फ़ील्ड को अलग करने के लिए एक कोलन (|_+_|) का उपयोग करती है।
हम उस फ़ाइल और |_+_| . का उपयोग करेंगे (सेपरेटर स्ट्रिंग) बताने का विकल्प |_+_| कोलन (|_+_|) को विभाजक के रूप में उपयोग करने के लिए। बताने के लिए हम निम्नलिखित टाइप करते हैं |_+_| उपयोगकर्ता खाते और होम फोल्डर का नाम प्रिंट करने के लिए:
who
आउटपुट में उपयोगकर्ता खाते का नाम (या एप्लिकेशन या डेमन नाम) और होम फ़ोल्डर (या एप्लिकेशन का स्थान) होता है।
पैटर्न जोड़ना
यदि हम सभी नियमित उपयोगकर्ता खातों में रुचि रखते हैं, तो हम अन्य सभी प्रविष्टियों को फ़िल्टर करने के लिए अपनी प्रिंट कार्रवाई के साथ एक पैटर्न शामिल कर सकते हैं। चूंकि प्रयोक्ता आईडी संख्याएँ 1,000 के बराबर या उससे अधिक हैं, हम उस जानकारी के आधार पर अपने फ़िल्टर को आधार बना सकते हैं।
विज्ञापनहम अपनी प्रिंट क्रिया को निष्पादित करने के लिए केवल तभी टाइप करते हैं जब तीसरे क्षेत्र (|_+_|) में 1,000 या अधिक का मान होता है:
awk
पैटर्न को उस क्रिया से तुरंत पहले होना चाहिए जिससे वह संबद्ध है।
हम |_+_| . का उपयोग कर सकते हैं हमारी छोटी रिपोर्ट के लिए एक शीर्षक प्रदान करने का नियम। शीर्षक स्ट्रिंग में एक न्यूलाइन कैरेक्टर डालने के लिए (|_+_|) नोटेशन का उपयोग करके हम निम्नलिखित टाइप करते हैं:
awk
पैटर्न पूर्ण विकसित हैं नियमित अभिव्यक्ति , और वे |_+_| की महिमा में से एक हैं।
मान लीजिए कि हम माउंटेड फाइल सिस्टम के यूनिवर्सली यूनिक आइडेंटिफायर (यूयूआईडी) देखना चाहते हैं। अगर हम |_+_| . के माध्यम से खोज करते हैं स्ट्रिंग यूयूआईडी की घटनाओं के लिए फ़ाइल, इसे हमारे लिए वह जानकारी वापस करनी चाहिए।
हम अपने आदेश में खोज पैटर्न /UUID/ का उपयोग करते हैं:
awk
विज्ञापन
यह यूयूआईडी की सभी घटनाओं को ढूंढता है और उन पंक्तियों को प्रिंट करता है। हम वास्तव में बिना |_+_| . के वही परिणाम प्राप्त करते क्रिया क्योंकि डिफ़ॉल्ट क्रिया पाठ की पूरी पंक्ति को प्रिंट करती है। स्पष्टता के लिए, हालांकि, स्पष्ट होना अक्सर उपयोगी होता है। जब आप किसी स्क्रिप्ट या अपनी इतिहास फ़ाइल को देखते हैं, तो आपको खुशी होगी कि आपने अपने लिए कुछ सुराग छोड़े हैं।
पाई गई पहली पंक्ति एक टिप्पणी पंक्ति थी, और यद्यपि UUID स्ट्रिंग इसके बीच में है, |_+_| अभी भी इसे पाया। हम रेगुलर एक्सप्रेशन में बदलाव कर सकते हैं और बता सकते हैं |_+_| केवल उन पंक्तियों को संसाधित करने के लिए जो UUID से शुरू होती हैं। ऐसा करने के लिए, हम निम्नलिखित टाइप करते हैं जिसमें लाइन टोकन की शुरुआत शामिल है (|_+_|):
$
वह बेहतर है! अब, हम केवल वास्तविक माउंट निर्देश देखते हैं। आउटपुट को और भी परिष्कृत करने के लिए, हम निम्नलिखित टाइप करते हैं और डिस्प्ले को पहले फ़ील्ड तक सीमित रखते हैं:
अगर हमारे पास इस मशीन पर कई फाइल सिस्टम लगे होते, तो हमें उनके यूयूआईडी की एक साफ-सुथरी तालिका मिलती।
अंतर्निहित कार्य
|_+_| है कई फ़ंक्शन जिन्हें आप कॉल कर सकते हैं और अपने प्रोग्राम में उपयोग कर सकते हैं , कमांड लाइन और स्क्रिप्ट दोनों से। यदि आप कुछ खुदाई करते हैं, तो आप इसे बहुत फलदायी पाएंगे।
किसी फ़ंक्शन को कॉल करने की सामान्य तकनीक को प्रदर्शित करने के लिए, हम कुछ संख्यात्मक लोगों को देखेंगे। उदाहरण के लिए, निम्नलिखित 625 के वर्गमूल को प्रिंट करता है:
print
विज्ञापन यह आदेश 0 (शून्य) और -1 (जो गणितीय स्थिरांक, पीआई होता है) के आर्कटेंजेंट को प्रिंट करता है:
awk
निम्नलिखित कमांड में, हम |_+_| . के परिणाम को संशोधित करते हैं इसे प्रिंट करने से पहले फ़ंक्शन:
awk
फ़ंक्शंस अभिव्यक्तियों को पैरामीटर के रूप में स्वीकार कर सकते हैं। उदाहरण के लिए, यहां 25 का वर्गमूल निकालने का एक जटिल तरीका दिया गया है:
awk
अजीब लिपियों
यदि आपकी कमांड लाइन जटिल हो जाती है, या आप एक दिनचर्या विकसित करते हैं जिसे आप जानते हैं कि आप फिर से उपयोग करना चाहते हैं, तो आप अपना ट्रांसफर कर सकते हैं |_+_| एक स्क्रिप्ट में आदेश।
हमारे उदाहरण स्क्रिप्ट में, हम निम्नलिखित सभी करने जा रहे हैं:
हमारी लिपि नीचे दिखाई गई है।
|_+_| नियम प्रारंभिक चरणों को पूरा करता है, जबकि |_+_| नियम काउंटर मान प्रदर्शित करता है। मध्य नियम (जिसका कोई नाम नहीं है, न ही पैटर्न है इसलिए यह हर पंक्ति से मेल खाता है) दूसरे क्षेत्र को संशोधित करता है, रेखा को प्रिंट करता है, और काउंटर को बढ़ाता है।
विज्ञापनस्क्रिप्ट की पहली पंक्ति शेल को बताती है कि स्क्रिप्ट को चलाने के लिए किस निष्पादन योग्य (|_+_|, हमारे उदाहरण में) का उपयोग करना है। यह |_+_| . भी पास करता है (फ़ाइल नाम) विकल्प |_+_|, जो यह सूचित करता है कि वह जिस पाठ को संसाधित करने जा रहा है वह एक फ़ाइल से आएगा। जब हम इसे चलाते हैं तो हम फ़ाइल नाम को स्क्रिप्ट में पास कर देंगे।
हमने नीचे स्क्रिप्ट को टेक्स्ट के रूप में शामिल किया है ताकि आप कट और पेस्ट कर सकें:
$NF
इसे |_+_| नामक फ़ाइल में सहेजें। प्रति स्क्रिप्ट को निष्पादन योग्य बनाएं और , हम |_+_| का उपयोग करके निम्नलिखित टाइप करते हैं:
awk
अब, हम इसे चलाएंगे और पास करेंगे |_+_| स्क्रिप्ट के लिए फ़ाइल। यह फ़ाइल है |_+_| स्क्रिप्ट के भीतर नियमों का उपयोग करते हुए हमारे लिए प्रक्रिया करेगा:
date
फ़ाइल को संसाधित किया जाता है और प्रत्येक पंक्ति प्रदर्शित होती है, जैसा कि नीचे दिखाया गया है।
विज्ञापन
दूसरे फ़ील्ड में x प्रविष्टियाँ हटा दी गईं, लेकिन ध्यान दें कि फ़ील्ड विभाजक अभी भी मौजूद हैं। लाइनों की गिनती की जाती है और कुल आउटपुट के नीचे दिया जाता है।
awk awkward के लिए खड़ा नहीं है
|_+_| अजीब के लिए खड़ा नहीं है; यह भव्यता के लिए खड़ा है। इसे प्रोसेसिंग फिल्टर और रिपोर्ट राइटर के रूप में वर्णित किया गया है। अधिक सटीक रूप से, यह इन दोनों, या बल्कि, एक उपकरण है जिसका उपयोग आप इन दोनों कार्यों के लिए कर सकते हैं। कुछ ही पंक्तियों में |_+_| एक पारंपरिक भाषा में व्यापक कोडिंग की आवश्यकता को प्राप्त करता है।
उस शक्ति का उपयोग नियमों की सरल अवधारणा द्वारा किया जाता है जिसमें पैटर्न होते हैं, जो प्रक्रिया के लिए पाठ का चयन करते हैं, और क्रियाएं जो प्रसंस्करण को परिभाषित करती हैं।
सम्बंधित: डेवलपर्स और उत्साही लोगों के लिए सर्वश्रेष्ठ लिनक्स लैपटॉप
आगे पढ़िएडेव मैके ने पहली बार कंप्यूटर का इस्तेमाल किया जब छिद्रित पेपर टेप प्रचलन में था, और वह तब से प्रोग्रामिंग कर रहा है। आईटी उद्योग में 30 से अधिक वर्षों के बाद, वह अब एक पूर्णकालिक प्रौद्योगिकी पत्रकार हैं। अपने करियर के दौरान, उन्होंने एक स्वतंत्र प्रोग्रामर, एक अंतरराष्ट्रीय सॉफ्टवेयर विकास टीम के प्रबंधक, एक आईटी सेवा परियोजना प्रबंधक, और हाल ही में, एक डेटा सुरक्षा अधिकारी के रूप में काम किया है। उनका लेखन Howtogeek.com, cloudavvyit.com, itenterpriser.com, और opensource.com द्वारा प्रकाशित किया गया है। डेव एक लिनक्स इंजीलवादी और ओपन सोर्स एडवोकेट हैं।
पूरा जैव पढ़ें