perl one-liner增加一个值

时间:2012-07-20 21:39:45

标签: perl

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

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

这会删除引号 - 无法弄清楚如何将引号添加回输出。

5 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:5)

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

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

答案 2 :(得分:1)

许多解决方案:

perl -lpe 's/"(\d+)"/$1+1/e;s/(.*)/"$1"/'

答案 3 :(得分:1)

高尔夫赢家是:

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

答案 4 :(得分:0)

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

说明:e修饰符告诉perl评估替换值(用大括号括起来)。 1+$1返回递增的数字。