दिलचस्प पोस्ट
कॉलबैक जब निर्भरता संपत्ति को एक्सएमएल परिवर्तन प्राप्त होता है पॉव फ़ंक्शन के अजीब व्यवहार सर्वर साइड पर PHP स्क्रिप्ट का निष्पादन कैसे शेड्यूल करना है? कोणीय 2 डी त्रुटि – अपवाद: सभी पैरामीटर को हल नहीं कर सकता क्या आप एक्सटेंशन से क्रोम: // पृष्ठों तक पहुंच सकते हैं? हाइबरनेट के साथ स्प्रिंग सुरक्षा 3 डेटाबेस प्रमाणीकरण भविष्य का नाशक `std :: async 'अवरोधन से क्यों लौट आया है? स्पर्क डेटाफ़्रेम में प्रति समूह अधिकतम पंक्ति खोजें WCF बाइंडिंग द्वारा उपयोग किए गए Serializations के प्रदर्शन परीक्षण Index.php को छोड़कर सभी .php फ़ाइलों के लिए सीधी पहुंच से इनकार करें डिफ़ॉल्ट XML नाम स्थान, JDOM, और XPath सोप या वेब सेवाओं के लिए आराम? सी # में `डिफ़ॉल्ट` कीवर्ड का उपयोग क्या है? मैं कैसे स्वनिर्धारित करने के लिए numpy.correlate का उपयोग कर सकता हूँ? लॉगिन बटन के बिना फेसबुक प्रमाणीकरण

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

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

AxxBCyyyDEFzzLMN 

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

 A_BC_DEF_LMN 

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

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

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

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

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

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

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

 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