दिलचस्प पोस्ट
ग्रुप द्वारा + केस वक्तव्य फ़ाइल की एंटरपीपी की गणना कैसे करें? TypeError: JQuery फ़ंक्शन को कॉल करते समय $ फ़ंक्शन नहीं है परियोजनाओं के लिए App.Config परिवर्तन जो Visual Studio 2010 में वेब प्रोजेक्ट्स नहीं हैं? कुछ वैक्टर के तत्वों के सभी संभव संयोजन उत्पन्न करें (कार्टेसीयन उत्पाद) मैक ओएस शेर पर एमएएमपी में पीईसीएल के साथ ओअथ स्थापित करने का प्रयास करते समय समस्याएं आ रही हैं <Head> में गतिशील रूप से एक लिंक स्टाइलशीट जोड़ें एंड्रॉइड पर स्ट्रिंग की चौड़ाई कैसे प्राप्त करें? सही पक्ष पर बूटस्ट्रैप 4 navbar आइटम आईओएस स्थिति पट्टी को कैसे छिपाएंगे I फेसबुक के साथ रजिस्टर कभी कभी ईमेल नहीं प्रदान करता है हाइबरनेट में सक्रिय अद्यतन इकाई PHP बनाम टेम्पलेट इंजन सामग्री पर लाइन ब्रेक के साथ लेनदेन एडीटीवी डीआईवी क्या आप MySQL में तालिका नामों के रूप में संख्याओं का उपयोग करने की अनुमति देते हैं?

किसी अन्य वर्ण के साथ स्ट्रिंग में कुछ वर्णों को बदलना

मेरे पास एक स्ट्रिंग है जैसे

AxxBCyyyDEFzzLMN 

मैं सभी x और y और z को _ साथ बदलना चाहता हूं ताकि आउटपुट हो

 A_BC_DEF_LMN 

उसको कैसे करे?

मुझे पता है की एक श्रृंखला है

 echo "$string" | tr 'x' '_' | tr 'y' '_' 

काम करेगा, लेकिन मैं एक ही बार पाइप का उपयोग किए बिना ऐसा करना चाहता हूं।

संपादित करें: निम्नलिखित कार्य किया

 echo "$string" | tr '[xyz]' '_' 

Solutions Collecting From Web of "किसी अन्य वर्ण के साथ स्ट्रिंग में कुछ वर्णों को बदलना"

 echo "$string" | tr xyz _ 

आपके उदाहरण में A__BC___DEF__LMN देकर, x , y , या z की प्रत्येक घटना को प्रतिस्थापित कर देगा।

 echo "$string" | sed -r 's/[xyz]+/_/g' 

आपके उदाहरण में x , y या z की दोहराई वाली घटनाओं को एक _ साथ A_BC_DEF_LMN , A_BC_DEF_LMN देकर।

बैश पैरामीटर विस्तार का उपयोग करना:

 orig="AxxBCyyyDEFzzLMN" mod=${orig//[xyz]/_} 

आप इस लिंक को उपयोगी पा सकते हैं:

http://tldp.org/LDP/abs/html/string-manipulation.html

सामान्य रूप में,

$ प्रतिस्थापन के साथ $ substring के पहले मैच को बदलने के लिए:

 ${string/substring/replacement} 

$ प्रतिस्थापन के साथ $ substring के सभी मिलानों को बदलने के लिए:

 ${string//substring/replacement} 

संपादित करें: ध्यान दें कि यह $ $ नाम का एक चर पर लागू होता है

 read filename ; sed -i 's/letter/newletter/g' "$filename" #letter 

^ इनमें जितनी आवश्यकता है उतनी उपयोग करें, और आप अपने खुद के बेसिक एन्क्रिप्शन कर सकते हैं

यहां एक शेल पैरामीटर विस्तार के साथ एक समाधान है, जो एक एकल के साथ कई संगत घटकों को प्रतिस्थापित करता है:

 $ var=AxxBCyyyDEFzzLMN $ echo "${var//+([xyz])/_}" A_BC_DEF_LMN 

ध्यान दें कि +( pattern ) पैटर्न के साथ विस्तारित पैटर्न मिलान की आवश्यकता है, साथ चालू

 shopt -s extglob