Ved hjælp af PowerShell ønsker jeg at erstatte alle nøjagtige forekomster af [MYID]
i en given fil med MyValue
. Hvad er den nemmeste måde at gøre det på?
Brug (V3-version):
(Get-Content c:\temp\test.txt).replace('[MYID]', 'MyValue') | Set-Content c:\temp\test.txt
Eller for 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
Bemærk at parentesen omkring (Get-Content file.txt)
er påkrævet:
Uden parentesen læses indholdet, en linje ad gangen, og strømmer ned gennem pipelinen, indtil det når out-file eller set-content, som forsøger at skrive til den samme fil, men den er allerede åbnet af get-content, og du får en fejl. Parentesen bevirker, at operationen for læsning af indhold udføres én gang (åbne, læse og lukke). Først derefter, når alle linjer er blevet læst, bliver de pipet en ad gangen, og når de når den sidste kommando i pipelinen, kan de skrives til filen. Det'er det samme som $content=content; $content | hvor ...