我有一个名为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而不是追加?
答案 0 :(得分:9)
替换通常只是一个字符串,不会被评估为表达式。要评估它,请添加e
修饰符:
$n =~ s/^(\d+)/$1+1/eg;
答案 1 :(得分:5)
您需要更改替换,以便替换为表达式,而不是简单的插值字符串。通过添加e
修饰符,将其设为s/^(\d+)/$1+1/eg