Ich möchte mit PowerShell alle genauen Vorkommen von "MYID" in einer bestimmten Datei durch "MyValue" ersetzen. Was ist der einfachste Weg, dies zu tun?
Verwendung (Version V3):
(Get-Content c:\temp\test.txt).replace('[MYID]', 'MyValue') | Set-Content c:\temp\test.txt
Oder für V2:
(Get-Content c:\temp\test.txt) -replace '\[MYID\]', 'MyValue' | Set-Content c:\temp\test.txt
(Get-Content file.txt) |
Foreach-Object {$_ -replace '\[MYID\]','MyValue'} |
Out-File file.txt
Beachten Sie, dass die Klammern um (Get-Content file.txt)
erforderlich sind:
Ohne die Klammern wird der Inhalt gelesen, eine Zeile nach der anderen, und fließt die Pipeline hinunter, bis er out-file oder set-content erreicht, die versuchen, in dieselbe Datei zu schreiben, aber sie ist bereits durch get-content geöffnet und Sie erhalten einen Fehler. Die Klammer bewirkt, dass die Operation des Inhaltslesens einmal durchgeführt wird (öffnen, lesen und schließen). Erst dann, wenn alle Zeilen gelesen wurden, werden sie nacheinander in die Pipeline aufgenommen, und wenn sie den letzten Befehl in der Pipeline erreichen, können sie in die Datei geschrieben werden. Das ist dasselbe wie $content=content; $content | wobei ...