ファイル内の引用符で囲まれたすべての数値を1行に1つずつインクリメントしたい:
perl -pe 's/\"(\d+)\"/ 1 + $1 /ge' file
これにより引用符が削除されますが、引用符を出力に戻すにはどうすればよいですか?
ファイル内の引用符で囲まれたすべての数値を1行に1つずつインクリメントしたい:
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'
多くからの1つの解決策:
perl -lpe 's/"(\d+)"/$1+1/e;s/(.*)/"$1"/'
perl -pe 's/(\d)/{"\"".(1+$1)."\""}/ge' file
説明:e
修飾子は、置換値(中括弧内)を評価するようにPerlに指示します。そして1+$1
、増分された数を返します。