Searching and replacing within Powershell, seems a little awkward.
To do a search and replace, use the –replace parameter of ForEach-Object, with two attributes, the first being the thing to search for and the second being the replacement.
Get-Content -path ./NGA_Tracking.csv | ForEach-Object {$_ -replace ‘Tracking’, ‘TrackNum’}
You can do a series of these in a single set of piped commands….
Get-Content -path ./NGA_Tracking.csv | ForEach-Object { $_ -replace ‘Tracking’, ‘TrackNum’ `
-replace ‘X’, ‘Y’ `
-replace ‘A’, ‘B’ } |
Set-Content $mynewfile
In the case of a text file, each object being modified in the For-Each loop is a string terminated by a newline.
The good news is that there is full support for regular expressions, so if you know how to deal with those, they can be incorporated within the -replace mechanism.
I guess I’m still looking for something a bit more friendly for casual use, Wouldn’t it be nice, for instance to have something like Get-Content $myfile -replace ‘X’,’Y’. Well, we actually can do this:
(Get-Content ./NGA_Tracking -raw) -replace ‘Tracking’, ‘TrackNum’ | out-file ./NGA_Tracking -Encoding utf8
If you don’t put the parentheses around Get-Content $filename -raw you generate an error. The parentheses read the entire file into memory as an object, which can then take the -replace parameter. The -Encoding parameter is there to make sure the characters are all read correctly in subsequent uses of the file. (took lots of experimentation and blood on the floor, but that it what worked.)
The effect is the same, when the file name is replaced.
$Myfile = ‘./NGA_Tracking.csv’
(Get-Content $MyFile) -replace ‘Tracking’, ‘TrackNum’ | Out-File $MyFile -Encoding utf8
But, if you create an object then it works.
$Myfile = Get-Content ‘./NGA_Tracking.csv’
$Myfile -replace ‘Tracking, ‘Tracknum’
Text to HTML
As we start fiddling with text files, the question comes up regarding the creation of html files. There is a Convertto-HTML commandlet, which, on the face of it looks pretty rudimentary. But this TechNet article explains how to enhance things using styles.