如何通过增加其数字部分来查找和替换特定字符串?

如何通过增加其数字部分来查找和替换特定字符串?

我的输入文件是,

ami41 ami56
ami23
ami67
ami45 ami34 ami88
jama66
tumi234 bichi23455
susami345

使用单个命令行我需要输出如下内容,

ami42 ami57
ami24
ami68
ami46 ami35 ami89
jama66
tumi234 bichi23455
susami345

我使用了命令,

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

但是我得到的输出文件是,

ami42 ami57
ami24
ami68
ami46 ami35 ami89
jama67
tumi235 bichi23456
susami346

即所有带有字符串类型的数字都会增加。但我只需要带有字符串的数字ami增加。有人能给我推荐一些更好的命令行吗?

答案1

用一个Perl 后向回顾

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

告诉Perl在匹配其余模式之前(?=<ami)查找,但实际上并不将其包含在匹配中。ami

相关内容