5

ファイル内の引用符で囲まれたすべての数値を1行に1つずつインクリメントしたい:

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

多くからの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 に答える