2013-06-05 6 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" 

내가 (테스트 목적) 정규식 테스트라는 이름의 파일에 넣어 같은 문자열을 포함하는 일부 파일이 내가 원하는 무엇

각 숫자를 하나씩 증가시킵니다. 증가 시키면 안되는 다른 #define과 숫자가 있습니다. 증가해야하는 모든 변수 이름의 목록이 있습니다.

은 이미 숫자를 반환

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

같은 PowerShell 명령이 있습니다. 이제는 [가치] +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

nice 1, thanks !!! –

+5

'([int32] $ n + 1)'을'(1 + $ n) '로 바꾸면 powershell의 강제 변환 기능 덕분에 캐스트가 필요하지 않습니다. –

+1

@ C.B. 팁 고마워. 나는 그 사실을 몰랐다! –