文字列を順次カウンターに置き換えて、新しい行ごとにカウンターをリセットします。

文字列を順次カウンターに置き換えて、新しい行ごとにカウンターをリセットします。

ファイルテキストがあります(名前が索引付けされています)。

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>

<link-...>§§§</link>の内容に§§§の代わりに、次のようにプログレッシブ数を追加する必要がありました。

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>

答え1

方法は次のとおりですawk

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

カウンタを設定しc§§§行にカウンタ値が含まれている限り、各項目をカウンタ値で置き換え、各置換の前に後者をインクリメントします。§§§c

答え2

そしてperl

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

ファイルを変更するには:

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

関連情報