Die einfache Interpretation:
In der ersten Zeile, die mindestens ein Vorkommen von PATTERN enthält, möchten Sie es ignorieren und die Zeile unverändert drucken. In der zweiten Zeile, die mindestens ein Vorkommen von PATTERN enthält, möchten Sie die erste Instanz von PATTERN durch REPLACEMENT ersetzen. In der dritten Zeile, die mindestens ein Vorkommen von MUSTER enthält, möchten Sie die Zeile unverändert drucken. In der vierten Zeile, die mindestens ein Vorkommen von PATTERN enthält, möchten Sie die erste Instanz von PATTERN durch REPLACEMENT ersetzen. Und so weiter. Zeilen, die nicht mit MUSTER übereinstimmen, sollten unverändert gedruckt werden.
Dies kann mit Sed einfach so gemacht werden:
sed -e '/PATTERN/ { :inside' -e 'n;s//REPLACEMENT/;t' -e 'b inside' -e '}'
Oder mit weniger Leerzeichen und einem kürzeren Etikett:
sed -e '/PATTERN/{:i' -e 'n;s//REPLACEMENT/;t' -e 'b i' -e '}'
EDIT: Ich habe gerade die Frage noch einmal gelesen und die schwierigere Interpretation entdeckt:
Ersetzen Sie das zweite Vorkommen von PATTERN im gesamten Dokument durch REPLACEMENT, unabhängig davon, ob es in derselben Zeile wie das erste Vorkommen auftritt oder nicht. Lassen Sie das erste und dritte Vorkommen unverändert. Etc.
Ich glaube, dass dies auch mit Sed möglich ist, obwohl es VIEL schwieriger ist und ich glaube, dass es vom regulären Ausdruck abhängt, der verwendet werden soll. Ich werde versuchen, etwas auszuarbeiten und zu posten, aber ich werde diese Antwort vorerst mit der obigen einfachen Version stehen lassen.
sed -e 'n;s/2004-2009/6e législature/g'
, das mein Problem gelöst hat.