कैसे एक स्ट्रिंग को स्ट्रिंग के साथ एक स्लैश के साथ बदलें?


13

मैं एक फ़ाइल को स्ट्रिंग के साथ एक स्ट्रिंग में बदलने के लिए एक रास्ता ढूंढ रहा हूं जिसमें sed का उपयोग करके एक स्लैश होता है।

connect="192.168.100.61/foo"
srcText="foo.bar=XPLACEHOLDERX"
echo $srcText | sed "s/XPLACEHOLDERX/$connect"

परिणाम है:

sed: -e Expression #1, Character 32: Unknown option for `s'

जवाबों:


31

sकमांड में सीमांकक के रूप में किसी अन्य वर्ण का उपयोग करें :

printf '%s\n' "$srcText" | sed "s|XPLACEHOLDERX|$connect|"

या ksh93 के साथ स्लैश बचने ${var//pattern/replacement}पैरामीटर विस्तार ऑपरेटर (अब भी द्वारा समर्थित zsh, bash, mksh, yashऔर बिजीबॉक्स के हाल के संस्करणों sh)।

printf '%s\n' "$srcText" | sed "s/XPLACEHOLDERX/${connect//\//\\/}/"

दूसरे तरीके के लिए +1। पहले एक फ्रीबस पर काम नहीं करता है।
इब्राहिम

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