Prosta interpretacja:
W pierwszym wierszu, który zawiera co najmniej jedno wystąpienie WZORCA, chcesz go zignorować i wydrukować taki, jaki jest. W drugim wierszu, który zawiera co najmniej jedno wystąpienie WZORU, chcesz zastąpić pierwsze wystąpienie WZORU WYMIANĄ. W trzecim wierszu, który zawiera co najmniej jedno wystąpienie WZORCA, chcesz wydrukować wiersz bez zmian. W czwartym wierszu, który zawiera co najmniej jedno wystąpienie WZÓR, chcesz zastąpić pierwsze wystąpienie WZORU zamieniem. I tak dalej. Linie, które nie pasują do WZORU, powinny być drukowane bez zmian.
Można to łatwo zrobić za pomocą Sed:
sed -e '/PATTERN/ { :inside' -e 'n;s//REPLACEMENT/;t' -e 'b inside' -e '}'
Lub z mniejszą ilością białych znaków i krótszą etykietą:
sed -e '/PATTERN/{:i' -e 'n;s//REPLACEMENT/;t' -e 'b i' -e '}'
EDYCJA: Właśnie przeczytałem pytanie i zauważyłem trudniejszą interpretację:
Zamień drugie wystąpienie WZORCA w całym dokumencie na WYMIANA, niezależnie od tego, czy występuje w tym samym wierszu co pierwsze wystąpienie, czy nie. Pozostaw pierwsze i trzecie wystąpienie bez zmian. Itp.
Sądzę, że można to zrobić również za pomocą Sed, chociaż jest DUŻO trudniejsze i uważam, że zależy to od używanego wyrażenia regularnego. Spróbuję coś wymyślić i opublikować, ale na razie pozwolę tej odpowiedzi stać na powyższą prostą wersję.
sed -e 'n;s/2004-2009/6e législature/g'
rozwiązać problem.