PowerShellを使って,与えられたファイルの中で正確に出現する[MYID]
をすべてMyValue
で置き換えたいと思います。最も簡単な方法は何でしょうか?
使用する(V3バージョン)。
(Get-Content c:\temp\test.txt).replace('[MYID]', 'MyValue') | Set-Content c:\temp\test.txt
または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
なお、(Get-Content file.txt)
の括弧書きは必須です。
括弧がないと、コンテンツは1行ずつ読み込まれ、パイプラインを流れてout-fileやset-contentに到達し、同じファイルに書き込もうとしますが、get-contentで既に開いているため、エラーになります。括弧があることで、コンテンツの読み取りという操作が一度だけ行われます(オープン、リード、クローズ)。すべての行が読み込まれたときだけ、1行ずつパイプラインされ、パイプラインの最後のコマンドに到達したときに、ファイルに書き込むことができます。これは、$content=content; $content | where ... と同じです。