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 回答