स्ट्रिंग प्रतिस्थापन: सभी घटनाएँ


13

एक साधारण सवाल है, लेकिन मुझे इसका जवाब नहीं मिल रहा है। zsh प्रलेखन मुझे अभिभूत करता है :-(

function z ()
{
  echo ${1:s/the/THE}
}

$ z thethethe
THEthethe

...

मैं 'द' को सभी 'द' से कैसे बदल सकता हूं , केवल पहली घटना नहीं? Zsh के साथ यह सबसे आसान चीजें हैं जो के लिए उदाहरण ढूंढना सबसे कठिन लगता है।

जवाबों:


23

यह एक इतिहास विस्तार संशोधक है , इसलिए gसंशोधक को तुरंत पहले जोड़ें s

echo ${1:gs/the/THE}

वैकल्पिक रूप से, पैरामीटर विस्तार सिंटैक्स का उपयोग करें जहां एक डबल स्लैश का अर्थ है एक वैश्विक प्रतिस्थापन। इस मामले में, इसके बाद s//का हिस्सा वाइल्डकार्ड पैटर्न है, जबकि इतिहास विस्तार प्रतिस्थापन एक शाब्दिक स्ट्रिंग लेता है।

echo ${1//the/THE}


3

वहाँ, यह सरल होना था:

echo ${1//the/THE}

... डबल स्लैश यह करता है, और आप ": s" के साथ बेवकूफ नहीं बना सकते

BTW, मुझे यकीन है कि मौजूदा के लिए 'StackExchange' साइटों को धन्यवाद देना चाहूंगा। स्थानों के सभी क्षेत्रों में से एक सवाल पूछ सकते हैं, ये अब तक का सबसे अच्छा है - एक न केवल लगभग हमेशा उत्तर मिलता है, लेकिन वे जवाब हमेशा उच्चतम गुणवत्ता के होते हैं।


1

// सही काम करता है अगर आप केवल एक विशेष शब्द को सभी कैप्स को बदलने की कोशिश कर रहे हैं, जबकि बाकी को अछूता छोड़ दें। यदि आप हर चीज को अपरकेस में बदलने की कोशिश कर रहे हैं, तो आप चर पर ": u" का उपयोग कर सकते हैं

SOME_ENV_VALUE='thethethe'
echo $SOME_ENV_VALUE:u // outputs: THETHETHE

आप सत्यापित कर सकते हैं कि आपके पास कौन से संशोधक हैं जो कि zsh विस्तार और प्रतिस्थापन मैनुअल में उपलब्ध हैं

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