कोष्ठक की एक जोड़ी के बीच सब कुछ हटाने के लिए एक-लाइनर?


15

मैं कुछ पाठों के साथ काम कर रहा हूँ जो कोष्ठक [] के बीच सामान से भरा है जो मुझे नहीं चाहिए। चूंकि मैं खुद को कोष्ठक हटा सकता हूं, इसलिए मुझे मेरे लिए ऐसा करने के लिए वन-लाइनर की आवश्यकता नहीं है, लेकिन मुझे एक-लाइनर की आवश्यकता है जो उनके बीच सब कुछ को हटा देगा।

कोष्ठक के बजाय कोष्ठक () के बारे में क्या?

जवाबों:


20

बदलें [some text]रिक्त स्ट्रिंग से। मान लें कि आप नेस्टेड ब्रैकेट को पार्स नहीं करना चाहते हैं, तो some textकोई भी ब्रैकेट नहीं हो सकता।

sed -e 's/\[[^][]*\]//g'

ध्यान दें कि ब्रैकेट अभिव्यक्ति [^][]में किसी भी चीज़ से मेल खाने के लिए [या ], ]पहले आना चाहिए। आम तौर पर ]चरित्र सेट समाप्त होता है, लेकिन अगर यह सेट में पहला चरित्र है (यहां, ^पूरक चरित्र के बाद ), ]खुद के लिए खड़ा है।

यदि आप नेस्टेड कोष्ठक को पार्स करना चाहते हैं, या यदि ब्रैकेटेड पाठ कई पंक्तियों को जोड़ सकता है, तो sed सही उपकरण नहीं है।


धन्यवाद, @Gilles ... btw, यह कई पंक्तियों को फैला सकता है, लेकिन मैं लाइनों में शामिल होने के लिए एक पर्ल स्क्रिप्ट का उपयोग कर रहा हूं ...
ixtmixilix

@ixtmixilix: यदि आपके पास एक पर्ल स्क्रिप्ट है, तो आप इसे ब्रैकेटेड टेक्स्ट को भी हटा सकते हैं। पर्ल में, आप लिख सकते हैं s/\[[^\[\]]*\]//g(यानी चरित्र सेट के सदस्यों से बचने के लिए बैकस्लैश का उपयोग करें)।
गिल्स एसओ- बुराई को रोकें '

@ गिल्स आप [^] [] बिल्कुल plz के बारे में अधिक बता सकते हैं।
साभार

1
@ जारश […]= चरित्र सेट। ^पहले चरित्र के रूप में सेट को पूरक करने का मतलब है। ]सामान्य रूप से सेट के अंत को चिह्नित किया जाएगा, लेकिन अगर यह इसके अलावा पहला चरित्र है ^, तो यह एक साधारण चरित्र है - एक खाली सेट या खाली सेट के पूरक की अनुमति नहीं है। फिर [साधारण है और ]सेट समाप्त होता है।
गिल्स एसओ- बुराई को रोकना '17

आपकी मदद के लिए @Gilles tnx लेकिन अभी भी मैं इसे न मैं मतलब है कि यह क्या कर रहा है "के रूप में प्रथम वर्ण साधन सेट पूरक ^" मिल :( क्या मतलब खुराक के लिए उदाहरण यह सभी सामग्री के लिए मिलान किया जाता है??
Arash

9

आदेश sed -e 's/([^()]*)//g'कोष्ठक के बजाय कोष्ठक करेगा।

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