Простая интерпретация:
В первой строке, которая содержит хотя бы одно вхождение PATTERN, вы хотите проигнорировать его и вывести строку как есть. Во второй строке, которая содержит хотя бы одно вхождение PATTERN, вы хотите заменить первый экземпляр PATTERN на REPLACEMENT. В третьей строке, которая содержит хотя бы одно вхождение PATTERN, вы хотите напечатать строку как есть. В четвертой строке, содержащей хотя бы одно вхождение PATTERN, вы хотите заменить первый экземпляр PATTERN на REPLACEMENT. И так далее. Строки, которые не соответствуют шаблону, должны быть напечатаны без изменений.
Это можно легко сделать с помощью Sed следующим образом:
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 во всем документе на REPLACEMENT, независимо от того, встречается ли оно в той же строке, что и первое вхождение, или нет. Оставьте первое и третье вхождения без изменений. И т.п.
Я полагаю, что это может быть сделано и с Sed, хотя это НАМНОГО сложнее, и я полагаю, что это зависит от используемого регулярного выражения. Я постараюсь что-то придумать и опубликовать, но пока оставлю этот ответ в простой версии выше.
sed -e 'n;s/2004-2009/6e législature/g'
которая решила мою проблему.