Я получаю содержимое файла и сохраняю только те строки, которые соответствуют регулярному выражению или пустой строке. Но написание результатов, например, меньшее количество данных, занимает много времени ... Вот код, о котором идет речь (я добавил несколько строк для отладки / измерения):
$original = Get-Content "$localDir\$ldif_file"
(Measure-Command -Expression { $original | Out-File "$localDir\Original-$ldif_file" }).TotalSeconds
$lines = ($original | Measure-Object -Line).Lines
"lines of `$original = $lines"
# Just keep lines of interest:
$stripped = $original | select-string -pattern '^custom[A-Z]','^$' -CaseSensitive
$lines = ($stripped | Measure-Object -Line).Lines
"lines of `$stripped = $lines"
(Measure-Command -Expression { $stripped | Out-File "$localDir\Stripped-$ldif_file" }).TotalSeconds
"done"
Проблема: требуется для записи в файл меньших данных ($ stripped) 342 секунды (примерно в 30 раз больше, чем исходные данные $)! Смотрите вывод ниже:
11.5371677
lines of $original = 188715
lines of $stripped = 126404
342.6769547
done
Почему исходный файл $ извлекается намного медленнее, чем исходный $? Как это улучшить?
Спасибо!