2011-08-04 15 views
22

के एक ब्लॉक को हटाने के लिए मैं पाठ का एक ब्लॉक है कि इस तरह दिखता है एसईडी का उपयोग करना:पाठ

<!-- BOF CLEAN --> 
... a bunch of stuff 
    <!-- EOF CLEAN --> 

मैं इस पूरे ब्लॉक को दूर करना चाहते हैं। Sed आदेश क्या है?

उत्तर

35
$ cat text 
abc 
    <!-- BOF CLEAN --> 
... a bunch of stuff 
    <!-- EOF CLEAN --> 
def 
$ sed '/<!-- BOF CLEAN -->/,/<!-- EOF CLEAN -->/d' text 
abc 
def 

http://www.catonmat.net/blog/sed-one-liners-explained-part-three/

+0

एसईडी नष्ट कर दिया मेरी फ़ाइल !! मैंने 'sed' /^0.*$/d 's1d13700.c' किया जो कंसोल पर सही परिणाम थूकता है, फिर मैंने' sed '/^0.*$/d' s1d13700.c> s1d13700.c' किया परिणाम के साथ मूल फ़ाइल को ओवरराइट करने के लिए, और फ़ाइल पूरी तरह खाली हो गई! –

+6

@ ज़ोम-बी 'sed ... s1d13700.c> s1d13700.c' में क्या होता है यह है कि शैल पहले से चलने से पहले एक नई खाली फ़ाइल' s1d13700.c' बनाता है, इस प्रकार एक ही नाम के साथ आपकी इनपुट फ़ाइल को ओवरराइट कर रहा है। फ़ाइल को स्थानांतरित करने के लिए 'sed -i.original ... s1d13700.c' का उपयोग करें और मूल फ़ाइल का बैक-अप' s1d13700.c.original' के रूप में बनाएं। –

3

से शुरू और <!-- BOF CLEAN --> सहित और में समाप्त होने और <!-- EOF CLEAN -->, उपयोग सहित एसईडी आदेश के बाद सभी पाठ निकालने के लिए:

sed -i '/<!-- BOF CLEAN -->/,/<!-- EOF CLEAN -->/d' file_name; 

संदर्भ: Delete text or paragraph between two sections using sed