बाएं कोष्ठक को सीड से कैसे बदलें?


27

मुझे (अपनी फ़ाइल में कुछ चरित्र के साथ प्रतिस्थापित करना होगा, और मैं ऐसा नहीं कर सकता। \(इसका उपयोग sed में समूहीकरण के लिए किया जाता है और जब मैं \\(sed के साथ प्रयोग किया जाता है , तो इसे \(केवल चरित्र के रूप में नहीं माना जाता है (। यह मुझे एक मुश्किल मामला लगता है।


7
सुझाव: यदि आप किसी पात्र को दूसरे के लिए स्थानापन्न करना चाहते हैं, तो उपयोग करें tr(anslate) echo 'Hello (world)' | tr '()' '[]':; यह आउटपुट करता है Hello [world]
लिकेन्स्टाइन

जवाबों:


45

यदि आप बिना सीड -r(विस्तारित नियमित अभिव्यक्तियों) का उपयोग करते हैं तो यह काम करेगा क्योंकि यह समूहीकरण के \(\)बजाय इसका उपयोग करता है ():

sed -e 's/(/X/g'

उदाहरण के लिए

$ echo "foo (bar) (baz)" | sed -e 's/(/X/g'
foo Xbar) Xbaz)

यदि आप उपयोग करना चाहते हैं तो आप अंदर -rरख सकते (हैं [], जैसे

sed -re 's/[(]/X/g'

जैसा कि आप केवल जगह ले रहे हैं और Lekensteyn का उपयोग trकरना अधिक उपयुक्त हो सकता है क्योंकि आपको नियमित अभिव्यक्ति की पूरी शक्ति की आवश्यकता नहीं है।


TL; DR: इससे बच नहीं।
qwertzguy

मैंने इसका उपयोग "विस्फोट" फ़ंक्शन के साथ php के हटाए गए "स्प्लिट" को बदलने के लिए किया, जिससे यह सुनिश्चित हो गया कि "स्प्लिट" एक स्थान से पहले है और उसके बाद "" ("grep -lRZ " split(" . | xargs -0 sed -i -e 's/ split(/ explode(/g'
बटल ब्यूटकस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.