Como encontrar e substituir uma string específica aumentando sua parte numérica? [duplicado]

0

Meu arquivo de entrada é

ami41 ami56
ami23
ami67
ami45 ami34 ami88
jama66
tumi234 bichi23455
susami345

Usando uma única linha de comando, preciso da saída como

ami42 ami57
ami24
ami68
ami46 ami35 ami89
jama66
tumi234 bichi23455
susami345

Eu usei o comando

perl -pe 's/(\d+)/$1+1/eg' inputfile

Mas eu tenho o arquivo de saída como,

ami42 ami57
ami24
ami68
ami46 ami35 ami89
jama67
tumi235 bichi23456
susami346

i.e. todos os valores numéricos com todos os tipos de strings são aumentados. Mas eu preciso do numérico apenas com ami string a ser aumentada. Alguém poderia me sugerir uma linha de comando melhor?

    
por tamal 25.02.2015 / 11:24

1 resposta

2

Use um Perl lookbehind :

$ perl -pe 's/(?<=ami)(\d+)/$1+1/eg' inputfile
ami42 ami57
ami24
ami68
ami46 ami35 ami89
jama66
tumi234 bichi23455
susami346

O (?=<ami) diz ao Perl para procurar ami antes de corresponder ao resto do padrão, mas não incluí-lo na correspondência.

    
por muru 25.02.2015 / 11:31