$ cat f1
My mistress' eyes are nothing like foobar;
foobar is far more red than her lips' red;
$ cat f2
Shall I compare thee to a summer's day?
Thou art more lovely and more foobar:
com perl
$ perl -i -pe 's/foobar\K/sprintf "%03d", ++$i/ge' f1 f2
$ cat f1
My mistress' eyes are nothing like foobar001;
foobar002 is far more red than her lips' red;
$ cat f2
Shall I compare thee to a summer's day?
Thou art more lovely and more foobar003:
- o valor padrão da variável não inicializada é
0
no contexto numérico -
e
modifier permite usar o código Perl na seção de substituição -
foobar\K
string para substituir,\K
usado apenas como uma conveniência aqui
Com gawk
possuindo extensão inplace e assumindo apenas uma instância de string por linha
gawk -i inplace -v s='foobar' '$0 ~ s{sub(s, sprintf("%s%03d", s, ++i))} 1' f1 f2