2011-12-21 19 views
5

में '<' or '>' से मिलान कैसे करें मैं sed का उपयोग कर फ़ाइल में '<') से कम या ''> ') से अधिक मिलान करने के लिए देख रहा हूं। मैं केवल एक वर्णsed/regex: एक स्ट्रिंग

का लक्ष्य चाहता हूं मेरा लक्ष्य उन्हें ' <' और '> ' के साथ प्रतिस्थापित करना है (सुनिश्चित करें कि उनके चारों ओर सफेद जगह है ताकि मैं उन्हें आसानी से पार्स कर सकूं)।

उदाहरण के लिए, यह मेल होगा:

<p>Hey this is a paragraph.</p><p>And here is another.</p> 

(टैग के भीतर अंतरिक्ष के बिना) .. और यह में बदल जाते हैं (रिक्त स्थानों ध्यान दें)

<p> Hey this is a paragraph. </p> <p> And here is another. </p> 



यहां मेरा प्रारंभिक (गलत) अनुमान था:

sed 's/<{1}|>{1}/ <> /' ... 


यह पूरे शब्द/रेखा से मेल खाता है, जो वांछित नहीं है, और यह सही ढंग से प्रतिस्थापित नहीं करता है।

वैसे भी, किसी भी मदद की सराहना की जाएगी! धन्यवाद!

+1

आप _really_ नियमित अभिव्यक्ति के साथ HTML पार्स करने के लिए नहीं करना चाहती। एक HTML पार्सर का प्रयोग करें। (http://stackoverflow.com/a/1732454/ देखें जो अच्छे कारण के लिए एसओ पर सबसे ज्यादा जवाब देने वाले उत्तरों में से एक है) – geoffspear

+0

@Wooble: जबकि मैं आम तौर पर आपके दावे से सहमत हूं, रेगेक्स का उपयोग करके परीक्षण अभी भी ठीक हो सकता है और जैसे ... यदि यह इससे अधिक है, तो एक उचित पार्सर का उपयोग करें, हालांकि। – 0xC0000022L

+0

हाहा हाँ, मुझे पता है। मैंने उसे देखा है। मैं टैग के बहुत छोटे सबसेट के लिए पर्ल में एक खिलौना अकादमिक HTML फॉर्मेटर लिख रहा हूं। मैं सिर्फ यह सुनिश्चित करने के लिए sed और regex का उपयोग कर रहा हूं कि मेरे पास पार्ल कोड की आवश्यकता है। – jiman

उत्तर

5

यह आसान बनाने के लिए दो प्रतिस्थापन का प्रयास करें:

sed 's/</ </g ; s/>/> /g' file 
+1

अच्छा। धन्यवाद। – jiman

+1

या आप यह कर सकते हैं - 'sed -e'//&/g 'file' –