Використовуючи 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)
є обов'язковими:
Без дужок вміст зчитується, по одному рядку за раз, і стікає по конвеєру, поки не досягне out-file або set-content, який намагається записати в той самий файл, але він вже відкритий get-content і ви отримуєте помилку. Кругла дужка змушує операцію читання вмісту виконувати один раз (відкрити, прочитати і закрити). Тільки після того, як всі рядки прочитані, вони по черзі виводяться в конвеєр і коли вони доходять до останньої команди в конвеєрі, можуть бути записані в файл. Це те ж саме, що і $content=content; $content | де ...