2012-11-27 49 views
0

更換一個號碼,我有一個文件名爲文件,其中包含如何與其他使用正則表達式

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,而不是追加?

回答

9

替換通常只是一個字符串,它不作爲表達式進行評估。爲了評估它,添加e修改:

$n =~ s/^(\d+)/$1+1/eg; 
5

您需要更改替換,以便更換是表達,而不是一個簡單的插值字符串。通過添加e修改器,使其成爲s/^(\d+)/$1+1/eg

+0

重複的答案 –

相關問題