sed

2012-09-16 15 views
6

में विशेष वर्ण क्या किसी को पता है कि sed में विशेष वर्णों की पूरी सूची क्या है?sed

कृपया उत्तर दें, यह grep के लिए विशेष वर्णों की एक ही सूची है, क्योंकि यह सिर्फ मेरे प्रश्न को बदलता है: क्या किसी को पता है कि grep में विशेष वर्णों की पूरी सूची क्या है?

+0

sed (और grep) के लिए प्रलेखन वह है जिसे आप ढूंढ रहे हैं। आप वहां क्या नहीं मिला? – Mat

+0

मैं केवल विशेष वर्णों के उदाहरण देखता हूं, लेकिन मुझे कभी भी यकीन नहीं है कि यह विशेष वर्णों की _complete_ सूची है – mnr

+2

मुझे यकीन नहीं है कि "विशेष चरित्र" से आपका क्या मतलब है, लेकिन दस्तावेज सूचीबद्ध करता है जो आप कर सकते हैं। उस दस्तावेज़ीकरण को दोहराने में कोई बात नहीं है। – Mat

उत्तर

3

मुझे लगता है कि यह वर्णों की पूरी सूची है [\^$। | * * +() जिस पर सेड एक सामान्य चरित्र से अलग तरीके से प्रतिक्रिया देगा।

+2

बोली पर भी निर्भर करता है। लिनक्स 'sed' में वर्ण'() | +? 'अपने आप से विशेष नहीं हैं, केवल बैकस्लैश से पहले। – tripleee

+1

इसके अलावा एक चरित्र वर्ग '^ -]' (लेकिन कोई अन्य) के अंदर विशेष नहीं हैं। यह वास्तव में एक अलग मिनी भाषा है। – tripleee

+1

[POSIX] (http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html) के अंतर्गत एक वर्ण वर्ग के अंदर, आप लोकेल-संवेदनशील अभिव्यक्तियों को भी लिख सकते हैं जैसे कि [[[अल्फा:]] ' या '[[: punct:] [: digit:]] ','', ''' का भी एक विशेष अर्थ है - और यह (अभी तक एक और) मिनी भाषा है। यूआरएल में पॉज़िक्स-मानक बीआरई (मूल नियमित अभिव्यक्ति) और ईआरई (विस्तारित नियमित अभिव्यक्ति) के व्यवहार की सूची है। ['Sed'] का पॉज़िक्स विवरण (http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html) उस पर विस्तृत करता है। किसी भी विशिष्ट प्रणाली के लिए, स्थानीय मैनुअल पेज देखें। –

5

यह निर्भर करता है। सच पूछिये तो, एक मानक अनुरूप sed केवल बेसिक रेगुलर एक्सप्रेशन का उपयोग करना चाहिए, जिसके लिए the standard कहता है:

BRE विशेष वर्ण और संदर्भों जिसमें वे अपने विशेष अर्थ नहीं होता इस प्रकार हैं:

.[\ अवधि, बाईं स्क्वायर-ब्रैकेट, और बैकस्लैश एक ब्रैकेट अभिव्यक्ति में उपयोग किए जाने के अलावा विशेष होगा (आरई ब्रैकेट अभिव्यक्ति देखें)। एक अभिव्यक्ति जिसमें '[' है जो बैकस्लैश से पहले नहीं है और ब्रैकेट अभिव्यक्ति का हिस्सा नहीं है, अनिर्धारित परिणाम उत्पन्न करता है।

* तारांकन अभिव्यक्ति में उपयोग किए जाने के अलावा, जब एक संपूर्ण बीआरई (प्रारंभिक '^', यदि कोई हो) के पहले चरित्र के रूप में, या उप-संपीड़न के पहले चरित्र के रूप में (प्रारंभिक के बाद) '^', अगर कोई है); एकाधिक वर्ण

मिलान बीआरईएस देख

^ स्वरित जब एक लंगर के रूप में इस्तेमाल विशेष होना (BRE अभिव्यक्ति एंकरिंग देखें) करेगा या एक ब्रैकेट अभिव्यक्ति का पहला वर्ण के रूप में (आरई ब्रैकेट अभिव्यक्ति देखने)

$ dollar- एंकर के रूप में उपयोग किए जाने पर संकेत विशेष होगा।

तो पूरी सूची .[\*^$ है, लेकिन संदर्भ मायने रखता है। इसके अलावा, कई sed विस्तारित नियमित अभिव्यक्तियों (ईआरई) का उपयोग करने के विकल्प प्रदान करते हैं, जो सूची का विस्तार करेंगे और उस संदर्भ को बदल देंगे जिसमें वर्ण विशेष हैं। उदाहरण के लिए, ईआरई समूह के बिना \( और \) का उपयोग करके गठित किया गया है, लेकिन ईआरई ( और ) स्वयं विशेष हैं और उन्हें सचमुच मिलान करने के लिए बच जाना चाहिए।