कैसे एक स्ट्रिंग में बीच में पात्रों को हटाने के लिए बैश में


12

बैश में मेरे पास एक स्ट्रिंग है, और मैं स्ट्रिंग के बीच में एक चरित्र को हटाने की कोशिश कर रहा हूं। मुझे पता है कि हम इस तरह से एक स्ट्रिंग की शुरुआत या अंत से पात्रों को निकाल सकते हैं:

myVar='YES'
myVar="${myVar#'Y'}"
myVar="${myVar%'S'}"

लेकिन मैं बीच में कैसे हटा सकता हूं?

जवाबों:


18

यदि आप जानते हैं कि किस वर्ण को निकालना है, तो आप पैरामीटर विस्तार में प्रतिस्थापन का उपयोग कर सकते हैं:

myVar=${myVar/E}  # Replace E with nothing

या, यदि आप जानते हैं कि किन पात्रों को रखना है:

myVar=${myVar/[^YS]}  # Replace anything but Y or S

या, यदि आप स्थिति जानते हैं:

myVar=${myVar:0:1}${myVar:2:1}  # The first and third characters

क्या होगा यदि आप या तो नहीं जानते? क्या होगा यदि आप सिर्फ जानते हैं कि आप वाई और एस रखना चाहते हैं?
रटगर हुइजैसमैन

@RutgerHuijsmans: अद्यतन की जाँच करें।
कोरोबा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.