मैं केवल दूसरे अवसर पर, sed के साथ एक पैटर्न को हटाना चाहता हूं। यहां मैं जो चाहता हूं, एक पैटर्न हटाएं लेकिन दूसरी घटना पर।सेड दूसरे मौके पर प्रतिस्थापित
क्या file.csv में बताया गया है:
a,Name(null)abc.csv,c,d,Name(null)abc.csv,f
a,Name(null)acb.csv,c,d,Name(null)acb.csv,f
a,Name(null)cba.csv,c,d,Name(null)cba.csv,f
आउटपुट चाहता था:
sed -r 's/(\(null)\).*csv//' file.csv
समस्या यहां है कि regex भी है:
a,Name(null)abc.csv,c,d,Name,f
a,Name(null)acb.csv,c,d,Name,f
a,Name(null)cba.csv,c,d,Name,f
यह मैं क्या करने की कोशिश की है लालची, लेकिन मैं नहीं रोक सकता है। मैं भी इस की कोशिश की, "अशक्त" की पहली आवृत्ति को छोड़ने के लिए:
sed -r '0,/null/! s/(\(null)\).*csv//' file.csv
भी कोशिश की, लेकिन लालची regex अभी भी समस्या है।
sed -r 's/(\(null)\).*csv//2' file.csv
मुझे लगता है कि ?
"सुस्त" regex कर सकते हैं, लेकिन मैं इसे कसरत नहीं कर सकते हैं पढ़ा है।
sed -r 's/(\(null)\).*?csv//' file.csv
यदि आपके पास 3 या अधिक '(शून्य) हो और आप अभी भी दूसरी घटना को हटाना चाहते हैं, तो मैं '* * 'के बजाय'। *? 'का उपयोग करके, पर्ल के साथ करना आसान होगा। –