Replace characters within a string.
Syntax
.Replace(strOldChar, strNewChar)
Key
strOldChar The characters to find.
strNewChar The characters to replace them with.
Examples
Replace characters in a string:
PS C:\> "abcdef" -replace "dEf","xyz"
Replace characters in a variable:
PS C:\> $demo = "abcdef"
PS C:\> $demo.replace("dEf","xyz")
abcxyz
PS C:\> $demo.replace("dEf","xyz")
abcxyz
Multiple replacements can be chained together in one command:
PS C:\> "abcdef" -replace "dEf","xyz" -replace "cx","-"
ab-yz
ab-yz
Search and Replace characters in a file:
PS C:\> $oldfile = "C:\demo\sourcetext.txt"PS C:\> $newfile = "C:\demo\newfile.txt"
PS C:\> $text = (Get-Content -Path $oldfile -ReadCount 0) -join "`n"
PS C:\> $text -replace 'dEf', 'xyz' | Set-Content -Path $newfile
Search and Replace using a hash table:PS C:\> $text -replace 'dEf', 'xyz' | Set-Content -Path $newfile
$text = 'Any old text string'
$hash = @{}
$hash.'old' = 'new'
$hash.A = 'B'
$hash.' ' = '_'
Foreach ($key in $hash.Keys) { $text = $text.Replace($key, $hash.$key) } $text
#This technique can also be used to replace common unicode characters.
Rename file extensions from .log to .txt
PS C:\> dir *.log | rename-item $_ -newname { $_.Name -replace '\.log','.txt' }
Using single quotes around the search strings will ensure that all punctuation is ignored by PowerShell.
An alternative method to read an entire file as a single long text string is the .Net ::ReadAllText method:
$allTheText = [System.Io.File]::ReadAllText($filePath)
$allTheText = [System.Io.File]::ReadAllText($filePath)
More complex replacements can be done by combining -match or -replace with a regular expression.
No comments:
Post a Comment
Note: only a member of this blog may post a comment.