Giải thích đơn giản:
Trên dòng đầu tiên có ít nhất một lần xuất hiện của MẪU bạn muốn bỏ qua nó và in dòng như hiện trạng. Trên dòng thứ hai có chứa ít nhất một lần xuất hiện của MẪU bạn muốn thay thế phiên bản đầu tiên của THỰC HÀNH bằng THAY THẾ. Trên dòng thứ ba có chứa ít nhất một lần xuất hiện của MẪU bạn muốn in dòng như hiện trạng. Trên dòng thứ tư có chứa ít nhất một lần xuất hiện của MẪU bạn muốn thay thế phiên bản đầu tiên của THỰC HÀNH bằng THAY THẾ. Và như thế. Các dòng không khớp với MẪU nên được in mà không thay đổi.
Điều này có thể dễ dàng thực hiện với Sed như vậy:
sed -e '/PATTERN/ { :inside' -e 'n;s//REPLACEMENT/;t' -e 'b inside' -e '}'
Hoặc, với ít khoảng trắng hơn và nhãn ngắn hơn:
sed -e '/PATTERN/{:i' -e 'n;s//REPLACEMENT/;t' -e 'b i' -e '}'
EDIT: Tôi chỉ đọc lại câu hỏi và phát hiện ra cách giải thích khó hơn:
Thay thế lần xuất hiện thứ hai của MẪU trong toàn bộ tài liệu bằng THAY THẾ, cho dù điều đó xảy ra trên cùng một dòng với lần xuất hiện đầu tiên hay không. Để lại lần xuất hiện đầu tiên và thứ ba không thay đổi. Vân vân.
Tôi tin rằng điều này cũng có thể được thực hiện với Sed, mặc dù nó RẤT NHIỀU và tôi tin rằng nó phụ thuộc vào biểu thức thông thường sẽ được sử dụng. Tôi sẽ cố gắng làm việc gì đó và đăng nó, nhưng bây giờ tôi sẽ để câu trả lời này với phiên bản đơn giản ở trên.
sed -e 'n;s/2004-2009/6e législature/g'giải quyết vấn đề của tôi.