我有一个文件文本(它是名称索引):
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