Powershell:显示符合条件的日志的最后X行,并继续监视该文件
我试图查看日志文件中出现的单词(“清除”)。 我想显示最后10行匹配的行(在命令运行时),并继续监视文件中新添加的符合条件的行 到目前为止,我在PowerShell中找到了一些东西:Powershell:显示符合条件的日志的最后X行,并继续监视该文件,powershell,Powershell,我试图查看日志文件中出现的单词(“清除”)。 我想显示最后10行匹配的行(在命令运行时),并继续监视文件中新添加的符合条件的行 到目前为止,我在PowerShell中找到了一些东西: get-content .\CallAudit.Engine.log -tail 10 -Wait | where {$_ -match "Purge"} 这是可行的,但它得到最后(任意)10行,然后才应用过滤器 我想 仅获取匹配的最后10行 让命令继续监视文件 可以这样做吗?-Tail 10对您没有帮助,因
get-content .\CallAudit.Engine.log -tail 10 -Wait | where {$_ -match "Purge"}
这是可行的,但它得到最后(任意)10行,然后才应用过滤器
我想
- 仅获取匹配的最后10行
- 让命令继续监视文件
可以这样做吗?
-Tail 10
对您没有帮助,因为您的purge
-filter是在读取最后10行之后执行的(可能包含也可能不包含purge
)
我会把这个分成两个电话。一个用于列出最后10个值,另一个用于监视
Get-Content -Path .\CallAudit.Engine.log | Where-Object {$_ -match "Purge"} | Select-Object -Last 10
Get-Content -Path .\CallAudit.Engine.log -Wait -Tail 0 | Where-Object {$_ -match "Purge"}
只需为作业使用正确的工具,即
less.exe
。它最常用作寻呼机(相当于Windows上的more
),但它是一个非常棒的工具,可以用来快速检查文件并监视它们
对于您的情况,您需要使用以下较少的选项:
-筛选行(与&/
)中的对象匹配相同
-永远向前(与F
相同)gc.-等待-Tail
log.txt
,并且只需要监视数字,则此命令为:
less.exe +"&[0-9]+`nF" log.txt
这是输出的样子:
更改[0-9]+
以匹配您的模式,并保留所有其他内容。另一个例子,只需实时显示构建错误并隐藏其他所有内容
less.exe +"&^ERROR`nF" build.log
你可以从巧克力中得到更少的巧克力:cinst less
在纯powershell上使用较少的资源的好处如下:
- 跨平台
- less功能非常强大,许多windows工具都使用它,如git、powershell社区扩展等。在您的武库中有这样的工具很好
,其中/foreach
-循环来实现简单的事情。可读性应始终优先考虑。:-)如果您确实需要在一行中添加它,请添加代码>在第一行之后结束当前命令/行并连接行。例<代码>获取内容在哪里选择-最后10;获取内容-等待|在哪里代码>为什么?因为我对语法很好奇:)这就是我添加解决方案的原因(用;
连接行)。但是,它的运行方式与使用换行符时的运行方式相同。:-)