सरल व्याख्या:
पहली पंक्ति में जिसमें PATTERN की कम से कम एक घटना शामिल है आप इसे अनदेखा करना चाहते हैं और लाइन को प्रिंट करना चाहते हैं। दूसरी पंक्ति में जिसमें PATTERN की कम से कम एक घटना शामिल है, आप PATTERN के पहले उदाहरण को रिप्लेसमेंट के साथ बदलना चाहते हैं। तीसरी पंक्ति में जिसमें PATTERN की कम से कम एक घटना शामिल है, जिसे आप रेखा के रूप में प्रिंट करना चाहते हैं। चौथी पंक्ति में जिसमें PATTERN की कम से कम एक घटना शामिल है, आप PATTERN के पहले उदाहरण को रिप्लेसमेंट के साथ बदलना चाहते हैं। और इसी तरह। जो लाइनें PATTERN से मेल नहीं खाती हैं, उन्हें परिवर्तन के बिना मुद्रित किया जाना चाहिए।
यह आसानी से सैड के साथ किया जा सकता है जैसे:
sed -e '/PATTERN/ { :inside' -e 'n;s//REPLACEMENT/;t' -e 'b inside' -e '}'
या, कम व्हाट्सएप और एक छोटे लेबल के साथ:
sed -e '/PATTERN/{:i' -e 'n;s//REPLACEMENT/;t' -e 'b i' -e '}'
संपादित करें: मैं बस सवाल फिर से पढ़ता हूं और कठिन व्याख्या करता हूं:
पूरे दस्तावेज में PATTERN की दूसरी घटना को रिप्लेसमेंट के साथ बदलें, चाहे वह पहली घटना के समान रेखा पर हो या न हो। पहली और तीसरी घटनाओं को अनछुए छोड़ दें। आदि।
मेरा मानना है कि यह सेड के साथ भी किया जा सकता है, हालांकि यह बहुत पेचीदा मामला है और मेरा मानना है कि यह प्रयोग किए जाने वाले नियमित अभिव्यक्ति पर निर्भर है। मैं कुछ बाहर काम करने और इसे पोस्ट करने की कोशिश करूंगा, लेकिन मैं इस जवाब को अभी के लिए सरल संस्करण के साथ खड़ा होने दूंगा।
sed -e 'n;s/2004-2009/6e législature/g'
जो मैंने सीखा है उसका उपयोग करके मैंने अपनी समस्या का समाधान किया।