Avatar of E=mc2
E=mc2
Flag for Canada asked on

Modify a Powershell script to relpace a character

I would like to modify the attached script so that when it sees 01-ABCDA, or 01ABCDB, 'and' if sees either 01230c, or 01232 in position 100, that it will change the last character from whatever 3 digits it sees at the end of those lines, to a ,008.

No other functions in the script are needed, so I am sure many of the lines will have to be removed.....

$inFolder = '\\saved\data'
$outSuffix = '_rev'


$referenceCount = 0
$row = 0
Get-ChildItem -Path $inFolder -Filter *.csv | Where-Object {$_.BaseName -notmatch "$($outSuffix)\Z"} | ForEach-Object {
	$outFile = Join-Path -Path $_.DirectoryName -ChildPath "$($_.BaseName)$($outSuffix)$($_.Extension)"
	$saveFile = $false
	Write-Host "Processing '$($_.Name)' ..."
	$content = Get-Content -Path $_.FullName | ForEach-Object {
		$fieldChanged = $false
		$row++
		$fields = $_.Split(',')
		If ($referenceCount -eq 0) {$referenceCount = $fields.Count}
		If ($fields.Count -ne $referenceCount) {
		   Throw "Field count in line $($row) is incorrect (is: $($fields.Count), expected: $($referenceCount))!"
		}
		$fields = $fields + ''
		$old3 = $fields[3]
		If ($addLastField.Keys -contains $fields[3]) {
			$fields[-1] = $addLastField[$fields[3]]
			$fieldChanged = $true
		}

		If ($fieldChanged) {
			Write-Host "    line $($row): $($old3) [$($fields[26])]) --> $($fields[3]); last: $($fields[-1])"
			$saveFile = $true
		}
		$fields -join ','
	}
	If ($saveFile) {
		$content | Set-Content -Path $outFile
		Write-Host "Changes written to $($outFile)."
	} Else {
		Write-Host "No changes found."
	}
}

Open in new window




This is the input script in a .csv file.

5,A,01234,01-ABCDA,Y,1251/2,1772345,,20181003,20181107,20181114,,1234567890000,COMP ACCOUNTS PAYABLE,123 ROAD WAY,,TREEWAY,FL,01234-5678,,,,1234564870004,Somewhere Warehouse,200 Treeview Court NW,,Everywhere,GA,12345-1234,,,018-441-5522,41245,ABCORPBC,,USD,N,,,,,,,,,,N,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,00987894561230,01230c,152324,STEEL,,,,123.00,US,0.00,US,0.00,US,10.5000,0.0000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,101
5,A,01234,01-ABCDB,Y,1251/2,1772345,,20181003,20181107,20181114,,1234567890000,COMP ACCOUNTS PAYABLE,123 ROAR WAY,,TREEWAY,FL,01234-5678,,,,1234564870004,Somewhere Warehouse,200 Treeview Court NW,,Everywhere,GA,12345-1234,,,018-441-5522,41245,ABCORPBC,,USD,N,,,,,,,,,,N,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,00987894561560,01232,152345,WOOD,,,,789.00,US,0.00,US,0.00,US,10.5100,0.0000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,102
5,A,01234,67891,Y,1253/2,1775478,,20181003,20181107,20181114,,1234567890000,OTHERCOMP ACCOUNTS PAYABLE,123 ROAD WAY,,FOREST,TX,01234-5678,,,,1234564870004,Another Warehouse, 300 Apt View Court NW,Specific Place,TX,12345-5678,,,018-441-5522,41245,DEFORPBC,,USD,N,,,,,,,,,,N,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,00987894564560,00456,152322,CANVAS,,,,123.00,US,0.00,US,0.00,US,10.5200,0.0000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,103
5,A,01234,55555,Y,1254/2,1771234,,20181003,20181107,20181114,,1234567890000,OTHEROTHERCOMP ACCOUNTS PAYABLE,123 ROAD WAY,,JUNGLE,GA,01234-9999,,,,1234564870004,BAnother Warehouse, 400 Sea View Court NW,AnotherSpecific Place,GA,12345-9999,,,018-441-5522,41245,GHIORPBC,,USD,N,,,,,,,,,,N,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,00987894564560,00456,152322,CANVAS,,,,123.00,US,0.00,US,0.00,US,10.5200,0.0000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,104
PowershellWindows 10Scripting Languages

Avatar of undefined
Last Comment
Coralon

8/22/2022 - Mon
ASKER CERTIFIED SOLUTION
Coralon

THIS SOLUTION ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
GET A PERSONALIZED SOLUTION
Ask your own question & get feedback from real experts
Find out why thousands trust the EE community with their toughest problems.
Experts Exchange has (a) saved my job multiple times, (b) saved me hours, days, and even weeks of work, and often (c) makes me look like a superhero! This place is MAGIC!
Walt Forbes