5

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

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

这会去除引号,但是如何将引号重新添加到输出中?

4

5 回答 5

7
perl -pe 's/\"(\d+)\"/ q{"} . (1 + $1) . q{"} /ge'
于 2012-07-20T21:42:53.273 回答
5

您可以使用环视断言 - http://perldoc.perl.org/perlre.html#Extended-Patterns

所以正则表达式变为:s/(?<=")(\d+)(?=")/ $1 + 1 /ge

于 2012-07-20T21:51:27.367 回答
2

高尔夫冠军是:

perl -pe's/"(\d+)"/"@{[1+$1]}"/g'
于 2012-07-22T07:08:50.733 回答
1

多种解决方案:

perl -lpe 's/"(\d+)"/$1+1/e;s/(.*)/"$1"/'
于 2012-07-20T21:45:14.260 回答
0
perl -pe 's/(\d)/{"\"".(1+$1)."\""}/ge' file

解释:e修饰符告诉 Perl 评估替换值(在大括号中)。并1+$1返回递增的数字。

于 2012-07-20T21:45:19.967 回答