Sed का उपयोग करना:
$ echo "$string" | sed -e "s/^$prefix//" -e "s/$suffix$//"
o-wor
Sed कमांड के भीतर, ^
कैरेक्टर के साथ शुरू होने वाले टेक्स्ट से मेल खाता है $prefix
, और पीछे चल $
रहे टेक्स्ट से मेल खाता है$suffix
।
एड्रियन फ्रुविर्थ नीचे दी गई टिप्पणियों में कुछ अच्छे अंक बनाते हैं, लेकिन sed
इस उद्देश्य के लिए बहुत उपयोगी हो सकते हैं। यह तथ्य कि तलछट द्वारा $ उपसर्ग और $ प्रत्यय की सामग्री की व्याख्या अच्छी या बुरी हो सकती है- जब तक आप ध्यान देते हैं, आपको ठीक होना चाहिए। सुंदरता यह है कि आप कुछ इस तरह से कर सकते हैं:
$ prefix='^.*ll'
$ suffix='ld$'
$ echo "$string" | sed -e "s/^$prefix//" -e "s/$suffix$//"
o-wor
हो सकता है कि आप क्या चाहते हैं, और दोनों कट्टरपंथी और बैश चर प्रतिस्थापन की तुलना में अधिक शक्तिशाली हो। यदि आपको याद है कि महान शक्ति के साथ बड़ी जिम्मेदारी आती है (जैसा कि स्पाइडरमैन कहता है), तो आपको ठीक होना चाहिए।
सेड का शीघ्र परिचय पाया जा सकता है http://evc-cit.info/cit052/sed_tutorial.html
खोल और तार के उपयोग के बारे में एक नोट:
दिए गए विशेष उदाहरण के लिए, निम्नलिखित भी काम करेगा:
$ echo $string | sed -e s/^$prefix// -e s/$suffix$//
... लेकिन केवल इसलिए:
- गूंज यह परवाह नहीं करती है कि इसके तर्क सूची में कितने तार हैं, और
- $ उपसर्ग और $ प्रत्यय में कोई स्थान नहीं हैं
यह आमतौर पर कमांड लाइन पर एक स्ट्रिंग को उद्धृत करने के लिए अच्छा अभ्यास है क्योंकि यहां तक कि अगर इसमें रिक्त स्थान हैं, तो इसे एक ही तर्क के रूप में कमांड में प्रस्तुत किया जाएगा। हम एक ही कारण के लिए $ प्रीफिक्स और $ प्रत्यय का उद्धरण करते हैं: प्रत्येक एडिट कमांड टू सेड को एक स्ट्रिंग के रूप में पास किया जाएगा। हम दोहरे उद्धरण चिह्नों का उपयोग करते हैं क्योंकि वे परिवर्तनीय प्रक्षेप के लिए अनुमति देते हैं; क्या हमने सिंगल कोट्स का इस्तेमाल किया था, तो कमांड ने एक शाब्दिक रूप दिया होगा $prefix
और $suffix
निश्चित रूप से वह नहीं था जो हम चाहते थे।
नोटिस, भी, चर सेट करते समय मेरे एकल उद्धरण का उपयोग prefix
और suffix
। हम निश्चित रूप से स्ट्रिंग्स में कुछ भी व्याख्या नहीं करना चाहते हैं, इसलिए हम उन्हें उद्धृत करते हैं ताकि कोई प्रक्षेप न हो। फिर, यह इस उदाहरण में आवश्यक नहीं हो सकता है, लेकिन यह एक बहुत अच्छी आदत है।