У меня есть файл журнала, который записывается постоянно в течение дня. Мне нужен способ проверить файл журнала и найти последнюю запись, соответствующую определенной строке.Найти последнюю подходящую запись из файла журнала
Эта запись может быть 5 строк с конца или 5000 строк.
Я не хочу читать весь журнал (который к концу дня может быть более 60000 строк).
Я также не хочу вытаскивать все записи, которые соответствуют, а затем получают последний, как и при работе, соответствующие записи могут составлять столько же, сколько третья часть журнала.
До сих пор все, что я могу найти, это либо использование Select-String
, чтобы получить все совпадения в массив, а затем получить последний или использовать (Get-Content xxx) [-1..-x]
, чтобы получить последние строки x. Ни один из них действительно не делает то, что мне нужно.
Ближайший мне удалось до сих пор являются:
$fullResult = (Get-Content $location)[-1 .. -5000] |
Select-String -Pattern $srch -List |
Select-Object -First 1
Но это не является совершенным, как он читает только последние 5000 строк, если результат я после того, как на линии 5001 он потерпит неудачу.
веселит, в принципе, он работает, но он по-прежнему кажется, читать сверху вниз, как, когда я запускаю его против полных дней LOGFILE это занимает некоторое время, чтобы работать, если результат это нуждается в очень конец. – IGGt
@IGGt Вы не можете пропустить, если вы не можете определить, где остановиться. –
справедливо, я полагаю. Я просто подумал, что, возможно, в конце будет возможность начать чтение, как я представляю для большинства людей, самая важная информация обычно находится в конце файла журнала, а не в начале. – IGGt