我想增加文件中引号中的每个数字,每行一个:
perl -pe 's/\"(\d+)\"/ 1 + $1 /ge' file
这会去除引号,但是如何将引号重新添加到输出中?
perl -pe 's/\"(\d+)\"/ q{"} . (1 + $1) . q{"} /ge'
您可以使用环视断言 - http://perldoc.perl.org/perlre.html#Extended-Patterns。
所以正则表达式变为:s/(?<=")(\d+)(?=")/ $1 + 1 /ge
高尔夫冠军是:
perl -pe's/"(\d+)"/"@{[1+$1]}"/g'
多种解决方案:
perl -lpe 's/"(\d+)"/$1+1/e;s/(.*)/"$1"/'
perl -pe 's/(\d)/{"\"".(1+$1)."\""}/ge' file
解释:e
修饰符告诉 Perl 评估替换值(在大括号中)。并1+$1
返回递增的数字。