लिनक्स में एसईडी क्या है और आप इसका उपयोग कैसे करते हैं?
sed s tream ed itor के लिए खड़ा है और लिनक्स / यूनिक्स में आमतौर पर उपयोग किया जाने वाला कमांड है। यह नाम उन दो शब्दों के पोर्टमैंटू से आता है। यह एक टेक्स्ट एडिटर नहीं है, हालांकि यह टेक्स्ट को संशोधित करता है। इसके बजाय, sed को "स्ट्रीम" के रूप में टेक्स्ट इनपुट प्राप्त होता है और आपके निर्देशों के अनुसार स्ट्रीम को संपादित करता है।
बड़े पैमाने पर, लोग ढूंढने और प्रतिस्थापन के कमांड लाइन संस्करण के रूप में sed
उपयोग करते हैं। कार्यक्रम में मुख्य आदेश एक चरित्र स्ट्रिंग को दूसरे के लिए प्रतिस्थापित करने के लिए प्रयोग किया जाता है। यह फाइलों के बैच पर कार्यों को खोजने और बदलने के लिए उपयोगी बनाता है, लेकिन नोटपैड या वर्ड से कुछ के रूप में उपयोग करना उतना आसान नहीं है। आपको पता चलेगा कि सिंटैक्स का उपयोग थोड़ा सा हो रहा है, लेकिन एक बार जब आप इसे नीचे ले लेंगे, तो आप देखेंगे कि यह कॉम्पैक्ट संपादक कितना अविश्वसनीय रूप से शक्तिशाली हो सकता है।
प्रतिस्थापन के लिए sed का उपयोग करना
Sed का उपयोग करने के लिए, आपको टर्मिनल विंडो खोलने की आवश्यकता होगी। आदेश sed
साथ बुलाया जाता है, लेकिन अकेले टाइपिंग कुछ भी नहीं करेगा। आपको एक आदेश, साथ ही कुछ पैरामीटर प्रदान करने की आवश्यकता है।
सबसे आम पैरामीटर विकल्प है, या s
। एक साधारण sed
substitution कमांड निम्न जैसा कुछ दिखता है:
sed / बिल्ली / कुत्ते / '
वह आदेश आने वाले पाठ को स्कैन करने के लिए ऑर्डर करेगा और स्ट्रिंग "बिल्ली" के प्रत्येक उदाहरण को "कुत्ते" के साथ प्रतिस्थापित करेगा। प्रदर्शित करने के लिए, हम echo
कमांड का उपयोग कुछ काम करने के लिए करने के लिए करेंगे।
गूंज बिल्ली कैटापल्ट | sed / बिल्ली / कुत्ते / '
Sed कमांड के लिए तीन मुख्य भाग हैं। सबसे पहले, वहाँ sed
जो कार्यक्रम शुरू करता है। फिर वहां s
जो प्रतिस्थापन आदेश शुरू करता है। फॉरवर्ड स्लैश /
एक विभाजक है। उसके बाद की स्ट्रिंग स्ट्रिंग sed की तलाश होगी। दूसरे स्लैश के बाद स्ट्रिंग प्रतिस्थापन वर्ण होंगे जो sed को स्ट्रीम में लिखते हैं। अंतिम स्लैश कमांड बंद कर देता है। सभी एक साथ, यह 's/text-to-find/text-to-replace/'
।
उस उदाहरण में एकल उद्धरण नोट करें। एकल उद्धरण आपको अपने आदेश में मेटा वर्णों का उपयोग करने की अनुमति देता है। जबकि हमारे अधिकांश उदाहरणों के लिए उद्धरण आवश्यक नहीं हैं, आपको सभी आदेशों के लिए उद्धरणों का उपयोग करने की आदत विकसित करनी चाहिए।
आंशिक तारों के बारे में क्या? उपरोक्त आदेश स्ट्रिंग "बिल्ली" की किसी भी उपस्थिति पर काम करेगा, भले ही यह किसी अन्य शब्द का हिस्सा हो। उदाहरण के लिए, "कैटापल्ट" "dogamaran" बन जाएगा "catamaran" बन जाएगा "dogamaran।"
गूंज कैटापल्ट | sed / बिल्ली / कुत्ते / '
वैश्विक प्रतिस्थापन
हमारे पहले उदाहरण में आपने देखा होगा कि मिलान करने वाली स्ट्रिंग का केवल पहला उदाहरण प्रतिस्थापित किया गया था। कई जीएनयू उपयोगिताओं की तरह, sed लाइन आधारित है। नतीजतन, यह केवल एक पंक्ति के भीतर पहले मैच पर काम करता है। यदि आपके लाइन में आपके उम्मीदवार स्ट्रिंग के लिए एकाधिक मिलान हैं, तो केवल पहला ही बदला जाएगा। लक्ष्य स्ट्रिंग की हर घटना पर sed काम करने के लिए, आदेश के अंत में g
ध्वज का उपयोग करें:
sed / बिल्ली / कुत्ते / जी '
यह निम्नलिखित उदाहरण की तरह काम करेगा:
बिल्ली कैटापल्ट catamaran गूंज | sed / बिल्ली / कुत्ते / जी '
वैश्विक ध्वज के बिना, प्रत्येक पंक्ति में "बिल्ली" का पहला उदाहरण प्रतिस्थापित किया जाएगा।
इनपुट और आउटपुट फाइलों को सेट करना
डिफ़ॉल्ट रूप से, sed मानक इनपुट पर काम करेगा। हालांकि, यह बहुत उपयोगी नहीं है। फ़ाइल पर sed चलाने के लिए, कमांड के अंत में फ़ाइल नाम निर्दिष्ट करें, जैसे:
sed's / cat / dog / g 'oldfile.txt> newfile.txt
यह "oldfile.txt" पर sed चलाएगा और कमांड के आउटपुट को "newfile.txt" पर सहेज देगा। अगर "newfile.txt" मौजूद नहीं है, तो यह कमांड द्वारा बनाया जाएगा। यदि आप आउटपुट फ़ाइल निर्दिष्ट नहीं करते हैं, तो sed फ़ाइल के नए पाठ को मानक इनपुट में गूंज देगा।
यदि आप किसी फ़ाइल की सामग्री को ओवरराइट करना चाहते हैं, तो आपको -i
ध्वज का उपयोग करना होगा। यह झंडा संपादन "जगह में बनाता है।"
sed -i '' / बिल्ली / कुत्ता 'oldfile.txt
यह आदेश तुरंत लक्ष्य फ़ाइल की सामग्री को ओवरराइट करता है, जो थोड़ा खतरनाक है। सुरक्षित पक्ष पर रहने के लिए, आप बैकअप में बैकअप बना सकते हैं।
फ़ाइल का बैकअप बनाने के लिए, -i
बाद एक एक्सटेंशन डालें। इसे कार्यात्मक विस्तार होने की आवश्यकता नहीं है: ".bu" या ".bak" ठीक काम करता है। यह एक एक्सटेंशन के साथ एक बैकअप फ़ाइल बना देगा।
sed -i.bak's / cat / dog 'oldfile.txt
यह "oldfile.txt.bak" बनाता है, जिसमें "oldfile.txt" के मूल संस्करण से unedited टेक्स्ट डेटा शामिल है।
नियमित अभिव्यक्ति मिलान
sed
की वास्तविक शक्ति नियमित अभिव्यक्तियों से मेल खाने से आता है। यह आपको शाब्दिक तारों की बजाय मिलान के लिए पैटर्न सेट करने की अनुमति देता है। उदाहरण के लिए, हम एक या अधिक संख्याओं के किसी भी सेट को दोहराने के लिए नीचे स्ट्रिंग की तरह कुछ उपयोग कर सकते हैं:
गूंज "123 एबीसी" | sed's / [0-9] [0-9] * / और & / '
आगे सीखना
sed एक स्क्रिप्टिंग भाषा के समान शक्ति की गहराई के साथ एक बेहद शक्तिशाली उपयोगिता है। Sed की पूर्ण क्षमताओं के बारे में अधिक जानने के लिए, ब्रूस बार्नेट की सैड के लिए व्यापक मार्गदर्शिका देखें।