У нас есть простой файл журнала. Это становится слишком большим или записи не имеют значения, поскольку они стареют. Записи имеют префикс datetime, подобный этому:
22.01.15 01:54:17 -I- Начать обрабатывать вещи
Иногда записи журнала занимают несколько строк, например:
01/23/15 01:18:00 -E- java.io.IOException: (101) Error between keyboard and chair
at this.mod.no.worky(what_were_you_thinking:duh)
Мы просто хотим удалить (целые) записи до определенной даты, например, через 30 дней.
Решения, которые усекаются до фиксированного числа строк или байтов, в этом случае не работают.
Самая последняя попытка с ужасной производительностью:
$cutDatePtrn = "^" + (get-date).AddDays(-30).tostring("MM/dd/yy ")
$newStartLine = (select-string -Path $logFile -Pattern $cutDatePtrn -Quiet -List).LineNumber
$tmp = $logFile + '.tmp'
get-content $logFile | select -skip $newStartLine | out-file $tmp