डिफ़ॉल्ट रूप से विस्तारित रेगेक्स मोड का उपयोग करके sed क्यों नहीं है?


10

मैं sed का उपयोग कर रहा हूँ। मैं एक रेगीक्स का उपयोग कर रहा था जो कि जहां तक ​​मैं देख सकता था, सही था, लेकिन सेड ने कुछ भी नहीं किया। यह बताता है कि मैं उपयोग कर रहा था \s+जो कि sed नहीं समझ सकता है, और जब मैंने [ ]+इसे स्विच किया तो काम किया।

इसलिए संक्षेप में, मैंने एक रेगीक्स बनाया, जिसके लिए काम करने के लिए मुझे लगभग हर चीज से बचना था और \sव्हॉट्सएप को हटाना था । लगता है कि इन सभी से बचने के लिए एक विधा है जो -rमैं पूछना चाहता हूं:

  1. -rSed के लिए डिफ़ॉल्ट मोड क्यों नहीं है? मुझे सब कुछ बचने के लिए इतनी परेशानी में क्यों जाना पड़ा?
  2. manयह कहता है कि विकल्प है --posixऔर "POSIX.2 BREs का समर्थन किया जाना चाहिए" इससे क्या पता चलता है? एनएफए / डीएफए मोड?

एक तरफ के रूप में, पर्ल में पर्ल के समान और ईआरई में व्हाट्सएप का मिलान करने के \s+लिए । [[:space:]][:space:]]*[[:space:]]+
jrm

जवाबों:


10

1) उत्तर किसी भी अन्य उपकरण के रूप में ही है जो दशकों में सुधार हुआ था। :)

आप डिफ़ॉल्ट व्यवहार को बदलकर मौजूदा स्क्रिप्ट को तोड़ना नहीं चाहते हैं।

Re 2) जिसका मिलान इंजन से कोई लेना-देना नहीं है; यह सिर्फ एक सवाल है कि नियमित अभिव्यक्ति के किस सेट का समर्थन किया जाता है। POSIX BRE का अर्थ है "मूल नियमित अभिव्यक्ति"।


बिंदु (2) के बारे में क्या?
जिम

क्या संपादन मदद करता है?
tink

1

बिंदु 2 के बारे में: डिफ़ॉल्ट रूप से gnu sedGNU का उपयोग करता है BRE। POSIX का उपयोग करने के लिए BREआपको निर्दिष्ट करना चाहिए--posix

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.