2009-11-12 11 views
7

मैं XML में टिप्पणियां कैसे हटा सकता हूं?विम - एक्सएमएल टिप्पणियां हटाना

खोलने और बंद करने टिप्पणी टैग एक ही लाइन पर हैं, मैं :g/^<!--.*-->$/d का उपयोग करते हैं टिप्पणी को हटाना। कई पंक्तियों में फैले टिप्पणियों को कैसे हटाएं?

उत्तर

17

. के बजाय \_. नई-पंक्तियों सहित सभी पात्रों पर मिलान अनुमति देता है। लेकिन वह अकेले रेगेक्स इंजन को ओवरबोर्ड पर जाने का कारण बनता है क्योंकि रेगेक्स डिफ़ॉल्ट रूप से लालची होते हैं। गैर-लालची मैच के लिए * के बजाय \{-} का उपयोग करें।

चूंकि g/ /d कमांड केवल एक लाइन (यहां तक ​​कि एक मल्टीलाइन मैच के लिए) हटा देता है, तो s///g (विकल्प वैश्विक) पर स्विच करना बेहतर होगा।

:%s/<!--\_.\{-}-->//g

+0

यह बहुत अच्छा काम करता है! धन्यवाद! –

2

आप एक नई फ़ाइल के लिए फ़ाइल को बदलने के लिए XSLT का उपयोग करना चाहिए। टिप्पणियों की प्रतिलिपि बनाने के लिए आप एक अतिरिक्त नियम के साथ पहचान परिवर्तन का उपयोग करते हैं।

<xsl:template match="node()|@*"> 
    <xsl:copy> 
    <xsl:apply-templates select="@*"/> 
    <xsl:apply-templates/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="comment()"/> 

आप लिनक्स पर libxslt पैकेज में "xsltproc" का उपयोग कर सकते एक स्क्रिप्ट जो मैं कल्पना आप vim से निष्पादित कर सकते हैं के रूप में यह करने के लिए।

0

मेरा मानना ​​है कि यह काम करना चाहिए:

:g/<!--.*?-->/d 

प्रश्न चिह्न तारांकन "आलसी" के बदले "लालची" बनाता है, जिसका अर्थ यह अभिव्यक्ति को पूरा करने के यथासंभव कम से मेल खाएगी। यह इस उदाहरण के मध्य भाग को हटाने से अभिव्यक्ति को रोकता है:

We want to keep this<!-- This is a comment -->We also want to keep this<!-- Another comment --> 

संपादित करें: ऐसा लगता है कि regex के vim स्वाद की तरह *? आलसी मिलान समर्थन नहीं करता। मेरी गलती।

+0

क्या बहु लाइन के बारे में? – ghostdog74

0
अगर इसकी भी एक परेशानी का ज्यादा नहीं

और आप अपने सिस्टम पर gawk है। तुम कोशिश कर सकते इस

$ more file 
<!-- 
asdlfj 
sdjf 
;jsgsdgjasl --> 
text i want 
i want 
.... 
<!-- junk junk --> 
i want text 
anthor text 
end 

$ gawk -vRS='-->' '{ gsub(/<!--.*/,"")}1' file 


text i want 
i want 
.... 


i want text 
anthor text 
end 
+0

क्या आप gsub() कॉल के अंत में "1" को समझा सकते हैं? –

+0

आप एक और तरीका लिख ​​सकते हैं: gawk -vRS = '->' '{gsub (/

+0

दा> काम करता है। क्या आप फ़ाइल के माध्यम से इसे दोहराने के बारे में बता सकते हैं? –

+0

@ विजय, क्षमा करें दोस्त मुझे कोई जानकारी नहीं है। आपको सुझाए गए मूल regexp का उपयोग करना पड़ सकता है। –

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