Substitua uma string por um contador seqüencial, redefinindo o contador em cada nova linha

2

Eu tenho um texto de arquivo (é um índice de nomes):

Variazione su Eraclito, <link-1262>§§§</link>
vecchio e il mare, <link-715>§§§</link>, <link-895>§§§</link>, <link-104>§§§</link> 
vento tra i salici, <link-355>§§§</link>
vergine e lo zingaro, <link-459>§§§</link>, <link-1564>§§§</link>

Eu tenho que adicionar um número progressivo ao conteúdo de < link -... > §§§ < / link > no lugar de §§§ da seguinte forma:

Variazione su Eraclito, <link-1262>1</link>
vecchio e il mare, <link-715>1</link>, <link-895>2</link>, <link-104>3</link> 
vento tra i salici, <link-355>1</link>
vergine e lo zingaro, <link-459>1</link>, <link-1564>2</link>
    
por cheledada 09.05.2016 / 13:09

2 respostas

3

Aqui está uma maneira com awk :

awk 'c=0;{while(match($0, /§§§/) > 0){c++;sub(/§§§/, c, $0)}};1' infile

Define c onça e, contanto que a linha contenha §§§ , substitui cada ocorrência de §§§ pelo valor de c onça, incrementando a última antes de cada substituição.

    
por 09.05.2016 / 13:33
2

com perl :

perl -pe '$n = 0; s/§§§/++$n/ge' < file

Para modificar o arquivo no local:

perl -i -pe '$n = 0; s/§§§/++$n/ge' file
    
por 09.05.2016 / 13:55