S programom PowerShell želim zamenjati vse natančne pojavitve [MYID]
v dani datoteki z MyValue
. Kakšen je najlažji način za to?
Uporaba (različica V3):
(Get-Content c:\temp\test.txt).replace('[MYID]', 'MyValue') | Set-Content c:\temp\test.txt
Ali za 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
Upoštevajte, da je okrog (Get-Content file.txt)
obvezen oklepaj:
Brez oklepaja se vsebina prebere po vrstici in teče po cevovodu, dokler ne doseže datoteke out-file ali set-content, ki poskuša zapisati v isto datoteko, vendar je ta že odprta s funkcijo get-content, zato se pojavi napaka. Oklepaj povzroči, da se operacija branja vsebine izvede enkrat (odpreti, prebrati in zapreti). Šele potem, ko so vse vrstice prebrane, se pošljejo po cevovodu in ko dosežejo zadnji ukaz v cevovodu, se lahko zapišejo v datoteko. To je enako kot $content=content; $content | kjer ...