Perl使用一行程序递增一个值

Perl使用一行程序递增一个值,perl,Perl,我想增加文件中引号中的每个数字,每行一个: perl -pe 's/\"(\d+)\"/ 1 + $1 /ge' file 这会去除引号,但如何将引号添加回输出?多种解决方案中的一种: perl -pe 's/\"(\d+)\"/ q{"} . (1 + $1) . q{"} /ge' perl -lpe 's/"(\d+)"/$1+1/e;s/(.*)/"$1"/' 说明:emodifier告诉Perl计算替换值(在花括号中)。和1+$1返回递增的数字。您可以使用环视断言- 因此正则表达

我想增加文件中引号中的每个数字,每行一个:

perl -pe 's/\"(\d+)\"/ 1 + $1 /ge' file

这会去除引号,但如何将引号添加回输出?

多种解决方案中的一种:

perl -pe 's/\"(\d+)\"/ q{"} . (1 + $1) . q{"} /ge'
perl -lpe 's/"(\d+)"/$1+1/e;s/(.*)/"$1"/'

说明:
e
modifier告诉Perl计算替换值(在花括号中)。和
1+$1
返回递增的数字。

您可以使用环视断言-


因此正则表达式变成:
s/(?),高尔夫冠军是:

perl -pe's/"(\d+)"/"@{[1+$1]}"/g'

这不正确。当我输入abc1“2”3“4”def时,它输出:
“abc1 3”4“def”
没关系,我错过了“每行一个”部分,考虑到这一限制,它工作得很好。感谢Roman的快速回答——我现在可以用谷歌搜索这个函数了,因为我知道它(以前没有见过它)@chuckfinley:哪个函数?
q{{code}
结构与不能使用的单引号“
相同,因为它们会用“0-13000”终止为我工作的单行程序.24G文件,在每行末尾,现在是“1-13091”。我在Mac上,但我认为PERL是PERL。。。?
perl -pe's/"(\d+)"/"@{[1+$1]}"/g'