0

files という名前のファイルがあります。

100-1-0_Message1_Tableau_problem.txt
1001-1-0_EDM_Queries_v2.mdb
1001-1-0_geocodes.xlsx
1001-1-0_losstypes.xlsx
1001-10-0_Exposure_Analysis_Tables_Needed.xlsx

ファイル名の最初の部分をインクリメントして、このファイルを置き換えたいと思います。つまり、001-1-0_EDM_Queries_v2.mdb から 1002-1-0_EDM_Queries_v2.mdb へ。perl を使用した以下の正規表現では、これを行うことができません。

perl -e '@lines = <>;foreach $f (@lines){$n = $f; $n=~s/^(\d+)/$1+1/g; print $n}' files

印刷します

100+1-1-0_Message1_Tableau_problem.txt
1001+1-1-0_EDM_Queries_v2.mdb
1001+1-1-0_geocodes.xlsx

追加する代わりに +1 を追加するように正規表現に指示するにはどうすればよいですか?

4

2 に答える 2

9

置換は通常単なる文字列であり、式として評価されません。それを評価するには、e修飾子を追加します。

 $n =~ s/^(\d+)/$1+1/eg;
于 2012-11-27T09:48:24.783 に答える
5

置換が単純な補間文字列ではなくになるように、置換を変更する必要があります。e修飾子を追加してこれを行います。s/^(\d+)/$1+1/eg

于 2012-11-27T09:49:15.913 に答える