用顺序计数器替换字符串,在每个新行上重置计数器

用顺序计数器替换字符串,在每个新行上重置计数器

我有一个文件文本(它是名称索引):

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

相关内容