【发布时间】:2015-07-13 09:32:58
【问题描述】:
我有一个日志文件,该文件全天不断被写入。 我需要一种方法来检查日志文件,并找到与特定字符串匹配的最后一个条目。
这个条目可以是从末尾算起的 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 行,它将失败。
【问题讨论】:
标签: powershell-2.0 select-string