विज्ञापन
दो सबसे कम अपराध-आधारित लिनक्स उपयोगिताओं सेड और ऑक हैं। हालाँकि यह माना जाता है कि वे थोड़े से आर्कषक लग सकते हैं, यदि आपको कभी भी कोड या टेक्स्ट के बड़े टुकड़ों में दोहरावदार बदलाव करना पड़े, या यदि आपको कभी किसी पाठ का विश्लेषण करना हो, तो Sed और Awk अमूल्य हैं।
तो, वे क्या हैं? उनका उपयोग कैसे किया जाता है? और कैसे, जब एक साथ जोड़ते हैं, तो क्या वे पाठ को संसाधित करना आसान बनाते हैं?
क्या है सेड?
एसईडी 1971 में विकसित किया गया था बेल लैब्स, पौराणिक कंप्यूटिंग अग्रणी द्वारा ली ई। मैकमोहन.
नाम के लिए खड़ा है धारा संपादक, और यह थोड़े है कि यह क्या करता है यह आपको शरीर या पाठ की धाराओं को संपादित करने की अनुमति देता है प्रोग्राम के रूप में, एक कॉम्पैक्ट और सरल, अभी तक ट्यूरिंग-पूर्ण प्रोग्रामिंग भाषा के माध्यम से।
जिस तरह से यह काम करता है वह सरल है: यह पाठ, लाइन-बाय-लाइन को एक बफर में पढ़ता है। प्रत्येक पंक्ति के लिए, यह पूर्वनिर्धारित निर्देश निष्पादित करेगा, जहाँ लागू हो।
उदाहरण के लिए, यदि किसी को "सोडा" के साथ "बीयर" शब्द को बदलने वाली एक सिड स्क्रिप्ट लिखना था, और फिर एक पाठ-फ़ाइल में पारित किया गया जिसमें संपूर्ण शामिल था "दीवार पर बीयर की 99 बोतलों" के लिए गीत, यह लाइन के आधार पर एक पंक्ति में उस फ़ाइल के माध्यम से जाएगा, और "दीवार पर सोडा के 99 बोतलें" प्रिंट करें, और इसी तरह पर।
सबसे बुनियादी एसआईडी स्क्रिप्ट एक हैलो वर्ल्ड एक है। यहाँ, हम यूनिक्स इको यूटिलिटी का उपयोग करते हैं, जो "हैलो वर्ल्ड" को छापने के लिए केवल आउटपुट स्ट्रिंग्स का उपयोग करता है। लेकिन हम इसे सेड में पाइप करते हैं, और इसे "डेव" के साथ "वर्ल्ड" को बदलने के लिए कहते हैं। स्व व्याख्यात्मक सामान।
गूंज "हैलो वर्ल्ड" | sed s / दुनिया / डेव
यदि आप कुछ और अधिक जटिल संपादन करने की आवश्यकता है, तो आप सिड निर्देशों को फाइलों में भी जोड़ सकते हैं। से प्रेरित यह प्रफुल्लित करने वाला Reddit धागा, मैं गीतों को ए-हा में ले जा रहा हूं मुझ पर लोग्रेग के साथ "आई", "मी", और "माय" के प्रत्येक उदाहरण को बदलें।
सबसे पहले, मैं गीत के गीत को एक टेक्स्ट फ़ाइल में डाल देता हूँ, जिसे कहा जाता है tom.txt. तब मैं अपना पसंदीदा टेक्स्ट एडिटर खोलूंगा (मेरी पसंदीदा विम है शीर्ष 7 कारण विम पाठ संपादक को एक मौका देने के लिएसालों से, मैंने एक के बाद एक टेक्स्ट एडिटर आज़माए हैं। आप इसे नाम दें, मैंने इसे आजमाया। मैंने अपने प्राथमिक दिन-प्रतिदिन के संपादक के रूप में इन संपादकों में से प्रत्येक को दो महीने तक इस्तेमाल किया। किसी तरह, मैं ... अधिक पढ़ें , परंतु नैनो नैनो बनाम vim: टर्मिनल टेक्स्ट एडिटर्स की तुलनाहालांकि टर्मिनल का उपयोग किए बिना व्यावहारिक रूप से किसी को भी उपयोग करने के लिए लिनक्स आसान हो गया है, हम में से कुछ ऐसे हैं जो नियमित रूप से इसका उपयोग करते हैं या उत्सुक हैं कि कोई कैसे नियंत्रित कर सकता है ... अधिक पढ़ें तथा gedit gedit: सबसे फ़ीचर से भरा हुआ सादा पाठ संपादकों में से एक [लिनक्स और विंडोज]जब आप सादे पाठ संपादकों के बारे में सोचते हैं, तो पहली चीज जो आपके सिर में पॉप हो सकती है, वह है विंडोज नोटपैड एप्लीकेशन। यह वही करता है जो इसकी नौकरी का विवरण बताता है - एक सादे पाठ के लिए सामान्य विशेषताएं ... अधिक पढ़ें दोनों उत्कृष्ट विकल्प हैं), और निम्नलिखित पंक्तियाँ जोड़ें। सुनिश्चित करें कि आपके द्वारा बनाई गई फ़ाइल समाप्त होती है .sed।
आप देख सकते हैं कि ऊपर दिए गए उदाहरण में, मैंने खुद को दोहराया है (उदाहरण के लिए / मुझे / ग्रेग / और एस / मी / ग्रेग /)। ऐसा इसलिए है क्योंकि मैक ओएस एक्स के साथ आने वाले जहाज की तरह सेड के कुछ संस्करण हैं नहीं केस-असंवेदनशील मिलान का समर्थन करें। नतीजतन, हमें प्रत्येक शब्द के लिए दो एसईडी निर्देश लिखने होंगे, इसलिए यह बड़े और अनपेक्षित संस्करण को पहचानता है।
यह पूरी तरह से काम नहीं करता है, जैसे कि आपने "I", "Me" और "My" के प्रत्येक उदाहरण को हाथ से बदल दिया है। याद रखें, हम केवल यह दिखाने के लिए एक अभ्यास के रूप में इसका उपयोग कर रहे हैं कि आप किस प्रकार सेड निर्देशों को एक स्क्रिप्ट में समूहित कर सकते हैं, और फिर उन्हें एक ही आदेश के साथ निष्पादित कर सकते हैं।
फिर, हमें फ़ाइल को इनवोक करना होगा। ऐसा करने के लिए, हम इस कमांड को चलाते हैं।
बिल्ली tom.txt | sed -f greg.sed
इसे धीमा करें और देखें कि यह क्या करता है। ईगल-आइड पाठकों ने हम पर ध्यान दिया होगा नहीं इको का उपयोग करके। हम बिल्ली का उपयोग कर रहे हैं। क्योंकि बिल्ली फ़ाइल की संपूर्ण सामग्री को प्रिंट कर लेगी, इसलिए गूंज केवल फ़ाइल नाम को प्रिंट करेगा। आपने यह भी देखा होगा कि हम "-f" झंडे के साथ सेड चला रहे हैं। यह इसे स्क्रिप्ट को फ़ाइल के रूप में खोलने के लिए कहता है।
अंतिम परिणाम यह है।
यह भी ध्यान देने योग्य है कि एसईडी नियमित अभिव्यक्ति (REGEX) का समर्थन करता है। ये आपको एक विशेष और जटिल वाक्यविन्यास का उपयोग करके पाठ में पैटर्न को परिभाषित करने की अनुमति देते हैं।
यहां बताया गया है कि यह कैसे काम कर सकता है। हम उपरोक्त गीत के बोल लेने जा रहे हैं, लेकिन प्रत्येक पंक्ति को प्रिंट करने के लिए regex का उपयोग करें नहीं है "टेक" से शुरू करें।
बिल्ली tom.txt | sed / ^ टेक / डी
बेशक, सैड अविश्वसनीय रूप से उपयोगी है। लेकिन यह और भी अधिक शक्तिशाली है जब Awk के साथ जोड़ा जाता है।
अवाक क्या है?
awk, जैसे सेड, एक प्रोग्रामिंग लैंग्वेज है जिसे टेक्स्ट के बड़े निकायों से निपटने के लिए डिज़ाइन किया गया है। लेकिन जब सेड को टेक्स्ट को प्रोसेस करने और संशोधित करने के लिए उपयोग किया जाता है, तो Awk को ज्यादातर एक टूल के रूप में उपयोग किया जाता है विश्लेषण तथा रिपोर्टिंग.
सेड की तरह, 1970 के दशक में बेल लैब्स में अवाक को पहली बार विकसित किया गया था। इसका नाम क्या कार्यक्रम से नहीं आता है कर देता है, बल्कि लेखकों में से प्रत्येक के उपनाम - अल्फ्रेड अहो, पीटर वेनबर्गर, और ब्रायन कर्नघन।
Awk एक समय में एक पाठ फ़ाइल या इनपुट स्ट्रीम एक पंक्ति पढ़कर काम करता है। प्रत्येक पंक्ति को यह देखने के लिए स्कैन किया जाता है कि क्या यह पूर्वनिर्धारित पैटर्न से मेल खाती है। यदि एक मैच पाया जाता है, तो एक कार्रवाई की जाती है।
लेकिन जब सेड और ऑक समान उद्देश्यों को साझा कर सकते हैं, तो वे दो पूरी तरह से अलग-अलग भाषाएं हैं, दो पूरी तरह से अलग डिजाइन दर्शन के साथ। जाग अधिक बारीकी से कुछ जैसा दिखता है सामान्य प्रयोजन की भाषाएँ आज सीखने के लिए एक प्रोग्रामिंग भाषा कैसे चुनें और 2 वर्षों में एक महान नौकरी प्राप्त करेंयह वास्तव में एक अच्छा प्रोग्रामर बनने के लिए समर्पित कार्य करने में वर्षों का समय ले सकता है; तो क्या आज से शुरू करने के लिए सही भाषा चुनने का एक तरीका है, ताकि कल काम पर रखा जा सके? अधिक पढ़ें , सी, पायथन और बैश की तरह। इसमें फ़ंक्शंस जैसी चीज़ें हैं, और इट्रियन और वैरिएबल (जेम्स ब्रूस) जैसी चीज़ों के लिए अधिक सी-लाइक अप्रोच है बताया कि कैसे काम करता है शुरुआती के लिए प्रोग्रामिंग के पूर्ण मूल बातें (भाग 2)प्रोग्रामिंग के लिए हमारे पूर्ण शुरुआती गाइड के भाग 2 में, मैं फ़ंक्शन, रिटर्न मान, लूप और सशर्त की मूल बातें कवर करूंगा। सुनिश्चित करें कि आपने इससे निपटने से पहले भाग 1 पढ़ा है, जहाँ मैंने समझाया ... अधिक पढ़ें ). सीधे शब्दों में कहें, तो यह एक प्रोग्रामिंग भाषा की तरह लगता है।
इसलिए, इसे आज़माएं। टेक ऑन मी के गीत का उपयोग करते हुए, हम उन सभी लाइनों को प्रिंट करने जा रहे हैं जो 20 वर्णों से अधिक लंबी हैं।
awk 'लंबाई ($ 0)> 80' tom.txt
अगला उदाहरण मैं बेशर्म से पालना आधिकारिक Awk प्रलेखन. लेकिन यह इस शक्तिशाली, अभी तक छोटी भाषा की क्षमता का एक बड़ा उदाहरण है। यह यह भी दर्शाता है कि पुनरावृत्ति और चर जैसी चीजें इसमें कैसे काम करती हैं। सबसे पहले, "WordCount.awk" नामक एक फ़ाइल बनाएं, और निम्न पंक्तियाँ जोड़ें।
{के लिए (i = 1); i = एनएफ; i ++) freq [$ i] ++ }
END {के लिए (फ्रीक में शब्द) प्रिंटफ "% s \ t% d \ n", शब्द, फ्रीक [शब्द] }
इसे सहेजें, और फिर इसे निम्न कमांड के साथ चलाएं।
awk -f WordCount.awk tom.txt
बिल्कुल सटीक? आप शायद देखेंगे कि वे किसी भी तरह के क्रम में नहीं हैं। आप कर सकते हैं यूनिक्स सॉर्ट उपयोगिता का उपयोग करके परिणाम सॉर्ट करें। लेकिन हम इसे दूसरे दिन के लिए छोड़ देंगे। हम इसे सरल रखने जा रहे हैं।
दो का मेल
संयुक्त होने पर अवाक और सेड दोनों अविश्वसनीय रूप से शक्तिशाली होते हैं। आप यूनिक्स पाइप का उपयोग करके ऐसा कर सकते हैं। वे "|" आदेशों के बीच बिट्स।
आइए इसे आज़माएँ: हम टेक ऑन मी की उन सभी पंक्तियों को सूचीबद्ध करने जा रहे हैं, जिनमें 20 से अधिक अक्षर हैं, जो Awk का उपयोग कर रहे हैं। फिर, हम उन सभी लाइनों को हटाने जा रहे हैं जो शुरू होती हैं "लेना". एक साथ, यह सब इस तरह दिखता है:
awk 'लंबाई ($ 0)> 20' tom.txt | sed / ^ टेक / डी
और इसका उत्पादन करता है:
अब इसे पलटें। हम टेक के साथ शुरू होने वाली सभी लाइनों को हटाकर शुरू करने जा रहे हैं, और फिर उन्हें Awk पर पाइप करते हैं, जहां हम गिनते हैं कि प्रत्येक शब्द कितनी बार दिखाई देता है। यह इस तरह दिखता है:
बिल्ली tom.txt | sed / ^ टेक / डी | awk -f WordCount.awk
द पावर ऑफ सेड एंड अवाक
केवल इतना ही आप एक लेख में समझा सकते हैं। लेकिन मुझे आशा है कि मैंने यह स्पष्ट किया है कि सैड और अवाक कितने शक्तिशाली हैं। सीधे शब्दों में कहें, तो वे एक टेक्स्ट-प्रोसेसिंग पावरहाउस हैं।
तो, आपको क्यों परवाह करनी चाहिए? ठीक है, इस तथ्य के अलावा कि आप कभी नहीं जानते हैं कि आपको किसी पाठ दस्तावेज़ में पूर्वानुमेय, दोहराए जाने वाले परिवर्तन करने की आवश्यकता है, लॉग फ़ाइलों को पार्स करने के लिए सेड और ऑक महान हैं। जब आप किसी समस्या को डीबग करना चाहते हैं तो यह विशेष रूप से आसान है आपके LAMP सर्वर में SSH- केवल वेब होस्टिंग के लिए साइन अप किया गया? चिंता मत करो - आसानी से किसी भी वेब सॉफ्टवेयर स्थापित करेंअपने शक्तिशाली कमांड लाइन के माध्यम से लिनक्स के संचालन के बारे में पहली बात नहीं जानते हैं? चिंता और नहीं। अधिक पढ़ें , या आपके सर्वर को हैक किया गया है या नहीं यह देखने के लिए अपने प्रवेश लॉग को देख रहा है।
क्या आपको Sed और Awk के लिए एक दिलचस्प उपयोग मिला है? क्या आपको लगता है कि कोई अन्य लिनक्स उपयोगिताओं की सराहना की जाती है? मुझे नीचे टिप्पणी में बताएं, और हम चैट करेंगे।
मैथ्यू ह्यूजस लिवरपूल, इंग्लैंड के एक सॉफ्टवेयर डेवलपर और लेखक हैं। वह शायद ही कभी अपने हाथ में मजबूत काली कॉफी के कप के बिना पाया जाता है और अपने मैकबुक प्रो और अपने कैमरे को पूरी तरह से निहारता है। आप उनके ब्लॉग को पढ़ सकते हैं http://www.matthewhughes.co.uk और @matthewhughes पर ट्विटर पर उसका अनुसरण करें