How to Replace Every Occurrence of a String in a File
Introduction
When working with files, sometimes we want to replace specified texts that appear all over the file In this article, we will show you some methods to replace every occurence of a text or string in a file.
Solution
Using Replace Method
Suppose we want to replace every occurence of string mystring
with hello
in a file named test.txt
. This file is located at C:\Scripts
folder. Then, we can use following script to replace those strings occurence:
(Get-Content C:\Scripts\test.txt) -replace 'mystring', 'hello' | Set-Content C:\Scripts\test.txt
There is also an alternative:
(Get-Content C:\Scripts\test.txt).Replace('mystring', 'hello') | Set-Content C:\Scripts\test.txt
Using .NET File Class
Since PowerShell supports .NET objects, we can use .NET File libraries to solve this problem in PowerShell, thus we can use combination of ReadAllText
and WriteAllText
method.
$content = [System.IO.File]::ReadAllText("C:\Scripts\test.txt").Replace("mystring","hello")
[System.IO.File]::WriteAllText("C:\Scripts\test.txt", $content)
Reading each line of the text, then replace them
We can also do a little more manual work, but still using replace
method. First, we can get the content of the text. Then, we iterate each line of the text and replace the strings. To iterate the content, we can use Foreach-Object
cmdlet.
(Get-Content C:\Scripts\test.txt) | Foreach-Object {$_ -replace 'mystring','hello'} | Set-Content C:\Scripts\test.txt
Conclusion
There are many ways to replace string occurrences in a file. We can use PowerShell replace
method. But, since PowerShell supports .NET objects, we can also use .NET libraries such as the one from System.IO.File
namespace.