2013-05-08 6 views
5

काम नहीं करता मैं 3 जमा चिह्नों से सभी लाइनों को हटाना चाहते हैं:धन चिह्नों पलायन

+++ 3 plus signs 
+ 1 plus sign 
+++ 3 plus signs 

यहाँ मेरी sed आदेश है, पंक्ति के आरंभ के बाद धन चिह्नों से बचने

sed '/^\+\+\+/d' -> This erase all lines 
sed '/^+++/d'  -> This works and show only the 1 plus sign line 

क्यूं कर? प्लस साइन से बचते समय क्या कोई समस्या है?

उत्तर

5

"एक त्वरित टिप्पणी। मूल sed" मेटाएक्टेक्टर "का समर्थन नहीं करता है। जीएनयू sed करता है अगर आप" -r "कमांड लाइन विकल्प का उपयोग करते हैं, जो विस्तारित नियमित अभिव्यक्तियों को सक्षम बनाता है।"

(Source)

आप sed -r का उपयोग नहीं करते हैं, तो आप + से बचने के लिए है क्योंकि यह एक metacharacter नहीं माना जाता है नहीं है।

+2

@ टॉम यह ध्यान देने योग्य है कि नियमित अभिव्यक्तियों में 3 लोकप्रिय वाक्यविन्यास रूप होते हैं: मूल, विस्तारित, और perl- संगत। नियमित sed (बिना -r) मूल रूप लागू करता है। –

संबंधित मुद्दे