我有一个日志文件,该文件全天不断被写入。我需要一种方法来检查日志文件,并找到与特定字符串匹配的最后一个条目。
该条目可能是从末尾算起的 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 行,它将失败。