Linux पर awk कमांड का उपयोग कैसे करें

फातमावती अचमद ज़ैनुरी / शटरस्टॉक



लिनक्स पर |_+_| एक कमांड-लाइन टेक्स्ट मैनिपुलेशन डायनेमो है, साथ ही एक शक्तिशाली स्क्रिप्टिंग भाषा भी है। यहां इसकी कुछ बेहतरीन विशेषताओं का परिचय दिया गया है।

सम्बंधित: शुरुआती के लिए 10 बुनियादी लिनक्स कमांड





इसका नाम कितना अजीब है

|_+_| 1977 में मूल संस्करण लिखने वाले तीन लोगों के आद्याक्षर का उपयोग करके कमांड का नाम दिया गया था: अल्फ्रेड अहो , पीटर वेनबर्गर , तथा ब्रायन कर्निघन . ये तीन आदमी दिग्गज से थे एटी एंड टी बेल लेबोरेटरीज यूनिक्स पेंथियन। तब से कई अन्य लोगों के योगदान से |_+_| विकसित करना जारी रखा है।

यह एक पूर्ण स्क्रिप्टिंग भाषा है, साथ ही कमांड लाइन के लिए एक पूर्ण टेक्स्ट मैनिपुलेशन टूलकिट है। यदि यह लेख आपकी भूख बढ़ाता है, तो आप कर सकते हैं हर विवरण की जाँच करें के बारे में |_+_| और इसकी कार्यक्षमता।



नियम, पैटर्न और कार्य

|_+_| उन कार्यक्रमों पर काम करता है जिनमें पैटर्न और क्रियाओं से युक्त नियम होते हैं। पैटर्न से मेल खाने वाले टेक्स्ट पर कार्रवाई की जाती है। पैटर्न घुंघराले ब्रेसिज़ (|_+_|) में संलग्न हैं। एक पैटर्न और एक क्रिया एक साथ मिलकर एक नियम बनाते हैं। संपूर्ण |_+_| कार्यक्रम सिंगल कोट्स (|_+_|) में संलग्न है।

आइए एक नज़र डालते हैं |_+_| . के सबसे सरल प्रकार पर कार्यक्रम। इसका कोई पैटर्न नहीं है, इसलिए यह इसमें फीड किए गए टेक्स्ट की हर लाइन से मेल खाता है। इसका मतलब है कि कार्रवाई हर लाइन पर की जाती है। कुंआ से आउटपुट पर इसका इस्तेमाल करें |_+_| आदेश।

यहाँ से मानक आउटपुट है |_+_|:



awk

विज्ञापन

शायद हमें उस सारी जानकारी की ज़रूरत नहीं है, बल्कि, केवल खातों पर नाम देखना चाहते हैं। हम आउटपुट को |_+_| . से पाइप कर सकते हैं में |_+_|, और फिर बताएं |_+_| केवल पहले फ़ील्ड को प्रिंट करने के लिए।

डिफ़ॉल्ट रूप से, |_+_| एक फ़ील्ड को रिक्त स्थान, एक पंक्ति की शुरुआत, या एक पंक्ति के अंत से घिरे वर्णों की एक स्ट्रिंग के रूप में मानता है। फ़ील्ड की पहचान डॉलर चिह्न (|_+_|) और एक संख्या द्वारा की जाती है। तो, |_+_| पहले फ़ील्ड का प्रतिनिधित्व करता है, जिसका उपयोग हम |_+_| . के साथ करेंगे पहले फ़ील्ड को प्रिंट करने की क्रिया।

हम निम्नलिखित टाइप करते हैं:

awk

|_+_| पहले फ़ील्ड को प्रिंट करता है और शेष पंक्ति को छोड़ देता है।

हम जितने चाहें उतने फ़ील्ड प्रिंट कर सकते हैं। यदि हम विभाजक के रूप में अल्पविराम जोड़ते हैं, |_+_| प्रत्येक फ़ील्ड के बीच एक स्थान प्रिंट करता है।

व्यक्ति द्वारा लॉग इन किए गए समय को प्रिंट करने के लिए हम निम्नलिखित टाइप करते हैं (फ़ील्ड चार):

awk

कुछ विशेष फ़ील्ड पहचानकर्ता हैं। ये टेक्स्ट की पूरी लाइन और टेक्स्ट की लाइन में आखिरी फील्ड का प्रतिनिधित्व करते हैं:

    $ 0: पाठ की पूरी पंक्ति का प्रतिनिधित्व करता है। $ 1: पहले क्षेत्र का प्रतिनिधित्व करता है। $ 2: दूसरे क्षेत्र का प्रतिनिधित्व करता है। : सातवें क्षेत्र का प्रतिनिधित्व करता है। : 45वें क्षेत्र का प्रतिनिधित्व करता है। $एनएफ: फ़ील्ड की संख्या के लिए खड़ा है, और अंतिम फ़ील्ड का प्रतिनिधित्व करता है।
विज्ञापन

हम एक छोटी टेक्स्ट फ़ाइल लाने के लिए निम्नलिखित टाइप करेंगे जिसमें एक छोटा उद्धरण शामिल होगा डेनिस रिची :

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

अजीब लिपियों

यदि आपकी कमांड लाइन जटिल हो जाती है, या आप एक दिनचर्या विकसित करते हैं जिसे आप जानते हैं कि आप फिर से उपयोग करना चाहते हैं, तो आप अपना ट्रांसफर कर सकते हैं |_+_| एक स्क्रिप्ट में आदेश।

हमारे उदाहरण स्क्रिप्ट में, हम निम्नलिखित सभी करने जा रहे हैं:

  • शेल को बताएं कि स्क्रिप्ट को चलाने के लिए किस निष्पादन योग्य का उपयोग करना है।
  • तैयार करें |_+_| |_+_| . का उपयोग करने के लिए फ़ील्ड विभाजक चर कोलन (|_+_|) द्वारा अलग किए गए फ़ील्ड के साथ इनपुट टेक्स्ट पढ़ने के लिए।
  • |_+_| . का प्रयोग करें आउटपुट फ़ील्ड विभाजक बताने के लिए |_+_| आउटपुट में फ़ील्ड को अलग करने के लिए कोलन (|_+_|) का उपयोग करने के लिए।
  • एक काउंटर को 0 (शून्य) पर सेट करें।
  • पाठ की प्रत्येक पंक्ति के दूसरे क्षेत्र को रिक्त मान पर सेट करें (यह हमेशा एक x होता है, इसलिए हमें इसे देखने की आवश्यकता नहीं है)।
  • संशोधित दूसरी फ़ील्ड के साथ लाइन प्रिंट करें।
  • काउंटर बढ़ाएँ।
  • काउंटर का मूल्य प्रिंट करें।

हमारी लिपि नीचे दिखाई गई है।

एक संपादक में एक अजीब स्क्रिप्ट का उदाहरण।

|_+_| नियम प्रारंभिक चरणों को पूरा करता है, जबकि |_+_| नियम काउंटर मान प्रदर्शित करता है। मध्य नियम (जिसका कोई नाम नहीं है, न ही पैटर्न है इसलिए यह हर पंक्ति से मेल खाता है) दूसरे क्षेत्र को संशोधित करता है, रेखा को प्रिंट करता है, और काउंटर को बढ़ाता है।

विज्ञापन

स्क्रिप्ट की पहली पंक्ति शेल को बताती है कि स्क्रिप्ट को चलाने के लिए किस निष्पादन योग्य (|_+_|, हमारे उदाहरण में) का उपयोग करना है। यह |_+_| . भी पास करता है (फ़ाइल नाम) विकल्प |_+_|, जो यह सूचित करता है कि वह जिस पाठ को संसाधित करने जा रहा है वह एक फ़ाइल से आएगा। जब हम इसे चलाते हैं तो हम फ़ाइल नाम को स्क्रिप्ट में पास कर देंगे।

हमने नीचे स्क्रिप्ट को टेक्स्ट के रूप में शामिल किया है ताकि आप कट और पेस्ट कर सकें:

$NF

इसे |_+_| नामक फ़ाइल में सहेजें। प्रति स्क्रिप्ट को निष्पादन योग्य बनाएं और , हम |_+_| का उपयोग करके निम्नलिखित टाइप करते हैं:

awk

अब, हम इसे चलाएंगे और पास करेंगे |_+_| स्क्रिप्ट के लिए फ़ाइल। यह फ़ाइल है |_+_| स्क्रिप्ट के भीतर नियमों का उपयोग करते हुए हमारे लिए प्रक्रिया करेगा:

date

फ़ाइल को संसाधित किया जाता है और प्रत्येक पंक्ति प्रदर्शित होती है, जैसा कि नीचे दिखाया गया है।

विज्ञापन

दूसरे फ़ील्ड में x प्रविष्टियाँ हटा दी गईं, लेकिन ध्यान दें कि फ़ील्ड विभाजक अभी भी मौजूद हैं। लाइनों की गिनती की जाती है और कुल आउटपुट के नीचे दिया जाता है।

awk awkward के लिए खड़ा नहीं है

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

उस शक्ति का उपयोग नियमों की सरल अवधारणा द्वारा किया जाता है जिसमें पैटर्न होते हैं, जो प्रक्रिया के लिए पाठ का चयन करते हैं, और क्रियाएं जो प्रसंस्करण को परिभाषित करती हैं।

लिनक्स कमांड
फ़ाइलें टार · पीवी · बिल्ली · टीएसी · चामोद · पकड़ · अंतर · एसईडी · साथ · पुरुष · पुष्डी · पोपड · ऍफ़एससीके · टेस्टडिस्क · स्व-परीक्षा प्रश्न · एफडी · पांडोक · सीडी · $पाथ · awk · में शामिल होने के · जेक्यू · तह · यूनीक्यू · जर्नलसीटीएल · पूंछ · राज्य · रास · fstab · बाहर फेंक दिया · कम · chgrp · चाउन · फिरना · देखना · स्ट्रिंग्स · प्रकार · नाम बदलने · ज़िप · खोलना · पर्वत · उमाउंट · इंस्टॉल · fdisk · एमकेऍफ़एस · आर एम · आरएमडीआईआर · rsync · डीएफ · जीपीजी · हम · नैनो · एमकेडीआईआर · से · एलएन · पैच · धर्मांतरित · आरक्लोन · टुकड़ा · एसआरएम
प्रक्रियाओं उपनाम · स्क्रीन · ऊपर · अच्छा · अच्छा पुनः · प्रगति · स्ट्रेस · प्रणाली · tmux · छो · इतिहास · पर · जत्था · नि: शुल्क · कौन · dmesg · उपयोगकर्तामोड · पी.एस. · चुरोट · xargs · ट्टी · कनिष्ठा · एलसोफे · vmstat · समय समाप्त · दीवार · हां · मार · नींद · सुडो · उनके · समय · Groupadd · उपयोगकर्तामोड · समूहों · lshw · बंद करना · रीबूट · विराम · बिजली बंद · पासवर्ड · एलएससीपीयू · क्रोंटैब · दिनांक · बीजी · एफजी
नेटवर्किंग नेटस्टैट · गुनगुनाहट · ट्रेसरूट · आईपी · एस एस · कौन है · फेल2बैन · बमोन · आप · उंगली · एनएमएपी · एफ़टीपी · कर्ल · wget · who · मैं कौन हूं · में · आईपीटेबल्स · एसएसएच-कीजेन · यूएफडब्ल्यूई

सम्बंधित: डेवलपर्स और उत्साही लोगों के लिए सर्वश्रेष्ठ लिनक्स लैपटॉप

आगे पढ़िए डेव मैके के लिए प्रोफाइल फोटो डेव मैकेयू
डेव मैके ने पहली बार कंप्यूटर का इस्तेमाल किया जब छिद्रित पेपर टेप प्रचलन में था, और वह तब से प्रोग्रामिंग कर रहा है। आईटी उद्योग में 30 से अधिक वर्षों के बाद, वह अब एक पूर्णकालिक प्रौद्योगिकी पत्रकार हैं। अपने करियर के दौरान, उन्होंने एक स्वतंत्र प्रोग्रामर, एक अंतरराष्ट्रीय सॉफ्टवेयर विकास टीम के प्रबंधक, एक आईटी सेवा परियोजना प्रबंधक, और हाल ही में, एक डेटा सुरक्षा अधिकारी के रूप में काम किया है। उनका लेखन Howtogeek.com, cloudavvyit.com, itenterpriser.com, और opensource.com द्वारा प्रकाशित किया गया है। डेव एक लिनक्स इंजीलवादी और ओपन सोर्स एडवोकेट हैं।
पूरा जैव पढ़ें

दिलचस्प लेख

लोकप्रिय पोस्ट

रिंग बनाम नेस्ट हैलो बनाम स्काईबेल एचडी: आपको कौन सा वीडियो डोरबेल खरीदना चाहिए?

रिंग बनाम नेस्ट हैलो बनाम स्काईबेल एचडी: आपको कौन सा वीडियो डोरबेल खरीदना चाहिए?

फ़ायरफ़ॉक्स में सहेजा गया एक भूला हुआ पासवर्ड खोजें

फ़ायरफ़ॉक्स में सहेजा गया एक भूला हुआ पासवर्ड खोजें

आप उनका उपयोग नहीं कर सकते: 8 सुविधाएँ केवल Windows 8 Enterprise में उपलब्ध हैं

आप उनका उपयोग नहीं कर सकते: 8 सुविधाएँ केवल Windows 8 Enterprise में उपलब्ध हैं

पॉडकास्ट डाउनलोड को सीमित करके अपने मैक या आईफोन पर स्थान कैसे बचाएं

पॉडकास्ट डाउनलोड को सीमित करके अपने मैक या आईफोन पर स्थान कैसे बचाएं

विंडोज 10 पर Alt+Tab से एज ब्राउजर टैब कैसे हटाएं

विंडोज 10 पर Alt+Tab से एज ब्राउजर टैब कैसे हटाएं

एंड्रॉइड डिवाइस पर ऐप को कैसे अनइंस्टॉल करें

एंड्रॉइड डिवाइस पर ऐप को कैसे अनइंस्टॉल करें

सब कुछ जो आपको अपने iPhone की बैटरी लाइफ को बेहतर बनाने के बारे में जानना चाहिए

सब कुछ जो आपको अपने iPhone की बैटरी लाइफ को बेहतर बनाने के बारे में जानना चाहिए

Signal में टंकण संकेतकों को कैसे बंद करें (या उन्हें चालू करें)

Signal में टंकण संकेतकों को कैसे बंद करें (या उन्हें चालू करें)

मई 2020 के अपडेट पर विंडोज 10 की नई शुरुआत का उपयोग कैसे करें

मई 2020 के अपडेट पर विंडोज 10 की नई शुरुआत का उपयोग कैसे करें

दृश्य कलाकृतियाँ क्या हैं?

दृश्य कलाकृतियाँ क्या हैं?