मेरे पास एक sed प्रतिस्थापन कमान है जिसे मैं BSD के sed
साथ-साथ GNU के साथ भी संगत करना चाहूंगा sed
। विस्तारित नियमित अभिव्यक्ति एक मुद्दा नहीं है क्योंकि मुझे इस मामले में उनकी आवश्यकता नहीं है। मेरी प्राथमिक समस्या इस तरह से है कि दो की sed
व्याख्या चरित्र से बचने के क्रम में है प्रतिस्थापन हैं। मेरे प्रतिस्थापन स्ट्रिंग में टैब्स और न्यूलाइन्स शामिल हैं और मैं चाहूंगा कि वे कमांड स्ट्रिंग्स में रखरखाव में आसानी के लिए दिखाई दें, हालांकि, बीएसडी sed
एस्केप सीक्वेंस और जीएनयू की व्याख्या नहीं sed
करता है । sed
बीएसडी पर इन एस्केप अनुक्रमों की व्याख्या करने का निर्देश देने का उपयुक्त तरीका क्या है ? निम्नलिखित दो स्निपेट मेरी समस्या का प्रतीक हैं:
जीएनयू sed
echo ABC | sed 's/B/\n\tB\n'
yeilds
A
B
C
बीएसडी sed
echo ABC | sed 's/B\n\tB\n'
पैदावार
AntBnC
स्पष्ट रूप से, \n
और \t
बीएसडी द्वारा भागने के दृश्यों के रूप में व्याख्या नहीं की गई हैsed
अब, मेरे सवाल पर। बीएसडी के अनुसारsed
मैनपेज के :
प्रतिस्थापन स्ट्रिंग में एक नया रेखा वर्ण निर्दिष्ट करने के लिए, इसे बैकस्लैश के साथ पूर्ववर्ती करें।
क्या इसका मतलब यह है कि मुझे बैकस्लैश द्वारा एक शाब्दिक नई रूपरेखा की आवश्यकता होगी ? प्रतिस्थापन पाठ में sed
भागने के क्रम की व्याख्या करने का निर्देश देने का उपयुक्त तरीका क्या है \n
?
sed
। अंत में यह शायद awk का उपयोग करने के लिए समझ में आएगा। तो आपको क्या लगता है कि मैंने BSD sed manpage I की व्याख्या के बारे में क्या कहा?