![如何通过增加其数字部分来查找和替换特定字符串?](https://linux22.com/image/1124737/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%E5%A2%9E%E5%8A%A0%E5%85%B6%E6%95%B0%E5%AD%97%E9%83%A8%E5%88%86%E6%9D%A5%E6%9F%A5%E6%89%BE%E5%92%8C%E6%9B%BF%E6%8D%A2%E7%89%B9%E5%AE%9A%E5%AD%97%E7%AC%A6%E4%B8%B2%EF%BC%9F.png)
我的输入文件是,
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