2013-06-05 36 views
4

我有包含像增加在PowerShell中使用正則表達式的數量

#define PROG_HWNR "#37595" 
#define C_HWPROG_NR "24499" 
#define PROG_HWNR "#39917" 
#define C_HWPROG_NR "24901" 
#define C_HWPROG_NR "37598" 

我把它們放在一個名爲正則表達式測試(用於測試目的)文件中的字符串一些文件

我想要做什麼每增加一個數字。還有其他#defines和數字不能增加,我有一個需要增加的所有變量名稱列表。

我已經有喜歡

Get-Content regex-test | foreach { [regex]::match($_,'"#?(\d+)"$').groups[1].value } 

它返回一個數字PowerShell命令。他們現在只需要被替換爲[value] + 1

您能指出我的方向嗎?謝謝!

回答

7

爲什麼不乾脆:

$tmp = Get-Content regex-test | foreach { $n = [regex]::match($_,'"#?(\d+)"$').groups[1].value; if ($n) {$_ -replace "$n", ([int32]$n+1)} else {$_}; } 

然後保存$tmp

+0

不錯1,謝謝!!! –

+5

如果您使用'(1 + $ n)'反轉'([int32] $ n + 1)',您不需要強制轉換,這要歸功於powershell的強制轉換功能。 –

+1

@ C.B。謝謝你的提示。我沒有意識到這一點! –