Isn't that a basic function..
Obviamente, não é. Mas ainda é possível :
sed 's/a\([^a]*\($\|a[^a]*\($\|a[^a]*\($\|a[^a]*\($\|a\)\)\)\)\)/A/g'
Mais legível com -r
, onde podemos eliminar as barras invertidas:
sed -r 's/a([^a]*($|a[^a]*($|a[^a]*($|a[^a]*($|a)))))/A/g'
i.e. a
, seguido por qualquer número de não a
, seguido por qualquer fim de linha ou outro a
, seguido por qualquer número de não a
, etc. Tudo após o primeiro a
é lembrado em .
BTW, se o Perl estiver disponível, você pode usar:
perl -pe 'BEGIN { @A = qw(a A) } s/a/$A[not $i++ % 5]/g'
%
é o operador de módulo. $ i é incrementado com cada correspondência, a negação do módulo é 1, 0, 0, 0, 0, 1, etc., que é usada como o índice em @A escolhe o a
ou A
.