विशेष वर्णों को बदलने के लिए sed का उपयोग करना


14

यह बदलने के लिए काम करता है tomके साथ samएक फ़ाइल में:

sed 's/tom/sam/g' file_1 > file_2

लेकिन यह नहीं है:

sed 's/*****/sam/g' file_1 > file_2

*****शब्द के साथ विशेष वर्णों को बदलने के लिए sam। मैं एक स्लेश \*लेकिन त्रुटियों के साथ की कोशिश की है ।


2
आपने किस कमांड के साथ प्रयास किया \*और आपको क्या त्रुटियां मिलीं?
1927

मैंने कोशिश की है: sed 's / **** / sam / g' test.txt> test2.txt और परिणाम में त्रुटि: sed: bad regex '*****': अवैध पूर्ववर्ती नियमित अभिव्यक्ति - इसके पास यह नहीं है blackslash \ * से पहले
गुलाब का पौधा

1
आप हर विशेष चरित्र से बचने की कोशिश कर सकते हैं:sed 's/\*\*\*\*\*/sam/g'
तालीज़ीन

जवाबों:


18

आपको विशेष वर्ण के \सामने बैकस्लैश के साथ विशेष वर्णों से बचने की आवश्यकता है , जैसे:

sed 's/\*/t/g' test.txt > test2.txt


0

आपको विशेष वर्ण के \सामने बैकस्लैश के साथ विशेष वर्णों से बचने की आवश्यकता है । अपने मामले के लिए, बैकस्लैश के साथ हर विशेष चरित्र से बचो \

उदाहरण के लिए: **** boy is ****

sed 's/\*\*\*\*/sam/g' filename

ans:

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