Теперь я использую get-content для получения содержимого файла, мне нужно отредактировать некоторые строки. Например, измените вторую строку:
перед:
line2: hello Everyone!
после:
line2: Hello Mr. Brown!
Какой командлет я могу использовать?
$file = Get-Content myfile.txt
$file | ForEach-Object {
if ($_.ReadCount -eq 2) {
$_ -replace '\w+','Hello Mr. Brown!'
} else {
$_
}
} |
Set-Content myfile.txt
Это изменит вторую строку (указанную через ReadCount -eq
) к Hello Mr. Brown!
. Обязательно используйте PowerShell 2.0+.
Если контент достаточно уникален, замена применяется ко всем строкам (но будет соответствовать только той, которая вас интересует).
В противном случае загрузите весь файл в коллекцию и обновите второй элемент (индексный).
Если файл достаточно велик, чтобы сразу загрузить в память весь файл, тогда потребуется что-то более умное….