Вы можете использовать оператор -replace
для сопоставления регулярных выражений и замены строки.
Если в строке только одна пара {}
, вы можете выполнить следующее, где .*?
соответствует любомуне символ новой строки как можно меньше. Поскольку по умолчанию Get-Content
создает объект, представляющий собой массив строк, вы можете получить доступ к каждой строке по индексу с [4]
строкой 5.
$content = Get-Content File.txt
$content[4] = $content[4] -replace '{.*?}','{new data}'
$content | Set-Content File.txt
Если может быть несколько пар {}
налиния, вам нужно быть более конкретным с вашим регулярным выражением. Подойдет положительное утверждение (?<=)
.
$content = Get-Content File.txt
$content[4] = $content[4] -replace '(?<=Reference=\*\\G){.*?}','{newest data}'
$content | Set-Content File.txt
В случае, когда вы не знаете, в какой строке содержатся данные, которые вы хотите заменить, вам нужно быть более точным в отношении данных, которыми вы являетесьзамена.
Get-Content File.txt -replace '{9668818B-3228-49FD-A809-8229CC8AA40F}','{New Data}' | Set-Content
При наличии требований к кодированию рассмотрите возможность использования параметра -Encoding
в командах Get-Content и Set-Content .