चेतावनी : यह नई कहानियों पर विचार नहीं करता है। अधिक गहन उत्तर के लिए, इसके बजाय इस SO-प्रश्न को देखें । (धन्यवाद, एड मॉर्टन और निकल्स पीटर)
ध्यान दें कि सब कुछ से बचना एक बुरा विचार है। सेड को अपने विशेष अर्थ को प्राप्त करने के लिए कई पात्रों की आवश्यकता होती है। उदाहरण के लिए, यदि आप प्रतिस्थापन स्ट्रिंग में एक अंक से बचते हैं, तो यह बैकरेस्फेरेंस में बदल जाएगा।
जैसा कि बेन ब्लैंक ने कहा, केवल तीन ही पात्र हैं जिन्हें प्रतिस्थापन स्ट्रिंग में भाग जाने की आवश्यकता है (स्वयं से बच जाता है, बयान के अंत के लिए आगे स्लैश और सभी को बदलने के लिए):
ESCAPED_REPLACE=$(echo $REPLACE | sed -e 's/[\/&]/\\&/g')
# Now you can use ESCAPED_REPLACE in the original sed statement
sed "s/KEYWORD/$ESCAPED_REPLACE/g"
यदि आपको कभी KEYWORD
स्ट्रिंग से बचने की आवश्यकता है , तो निम्नलिखित वह है जो आपको चाहिए:
sed -e 's/[]\/$*.^[]/\\&/g'
और द्वारा उपयोग किया जा सकता है:
KEYWORD="The Keyword You Need";
ESCAPED_KEYWORD=$(echo $KEYWORD | sed -e 's/[]\/$*.^[]/\\&/g');
# Now you can use it inside the original sed statement to replace text
sed "s/$ESCAPED_KEYWORD/$ESCAPED_REPLACE/g"
याद रखें, यदि आप /
सीमांकक के अलावा किसी अन्य पात्र का उपयोग करते हैं, तो आपको उन वर्णों के स्लेश को बदलने की आवश्यकता है, जो आपके द्वारा उपयोग किए जा रहे हैं। विवरण के लिए पीटरजेक्लॉ की टिप्पणी देखें।
संपादित: कुछ कोने के मामलों के कारण पहले के लिए जिम्मेदार नहीं हैं, ऊपर दिए गए आदेश कई बार बदल गए हैं। विवरण के लिए संपादित इतिहास जांचें।