Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Increasing an number in PowerShell with Regular Expressions

I have some files that contain strings like

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

I put them in a file named regex-test (for testing purposes)

What I want to do is increase each number by one. There are other #defines and numbers that must not be increased, I have a list of all variable names that need to be increased.

I already have a PowerShell command like

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

which returns the numbers. They now only need to be replaced with [value] + 1

Can you point me in the right direction? Thanks!

like image 522
Michael Niemand Avatar asked Feb 16 '23 08:02

Michael Niemand


1 Answers

Why not just:

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

Then save the $tmp.

like image 178
Davor Josipovic Avatar answered Feb 23 '23 14:02

Davor Josipovic