Согласно комментарию, необходимо отслеживать, сколько выполнено замен.
Чтобы прочитать файл построчно, используйте. Net * StreamReader.ReadLine () . Через некоторое время l oop продолжайте чтение, пока не дойдете до конца файла.
При чтении строк есть несколько вещей. Отслеживайте, сколько раз встречается заменяемая строка, и при необходимости заменяйте ее. Результаты должны быть сохранены в обоих случаях: строка, которая была заменена, и все остальные строки тоже.
Медленно добавлять содержимое в файл построчно, даже в дни твердотельных накопителей. Массовая операция намного эффективнее. Сохраните измененные данные в StringBuilder. После обработки всего файла запишите содержимое одной операции. Если размер файла будет большим (один гигабайт или более), рассмотрите возможность записи 10 000 строк за раз. Вот так
$sb = New-Object Text.StringBuilder
$reader = [IO.File]::OpenText("MyFile.csv")
$found = 0
$oldVal = '22222222222222'
$newVal = '777777777777777'
# Read the file line by line
while($null -ne ($line = $reader.ReadLine())) {
# Only change two first occurrances
if( ($found -lt 2) -and ($line -eq $oldVal) ) {
++$found
$line = $newVal
}
# Add data into a buffer
[void]$sb.AppendLine($line)
}
add-content "SomeOtherFile.csv" $sb.ToString()
$reader.close()