powershell - Powershell 从过去 5 分钟获取行
问题描述
我正在处理一个日志文件,我想过滤在过去 5 分钟内添加的消息,我不明白为什么[datetime]::ParseExact方法会以这种格式返回错误
日志格式
18-08-2021 12:00:00 Debug 127.0.0.1 hello
代码
$nowTime = (Get-Date).AddMinutes(-5)
Get-Content -Path "" |
Where-Object { $_ -match "^(\d{2}-\d{2}-\d{4}\t\d{2}:\d{2}:\d{2})" } |
Where-Object { [datetime]::ParseExact($matches[1], "dd-MM-yyyy `tHH:mm:ss", $null) -gt $nowTime } |
ForEach-Object {
Write-Output $_
}
错误
"ParseExact" with "3" argument(s): "String was not recognized as a valid DateTime."
解决方案
我认为分隔符格式不是您文件中的空格+制表符?
更改此部分
[datetime]::ParseExact($matches[1], "dd-MM-yyyy `tHH:mm:ss", $null)
省略 `t 之前的空格,如下所示,您的示例对我有用
$nowTime = (Get-Date).AddMinutes(-5)
Get-Content -Path "" |
Where-Object { $_ -match "^(\d{2}-\d{2}-\d{4}\t\d{2}:\d{2}:\d{2})" } |
Where-Object {
[datetime]::ParseExact($matches[1], "dd-MM-yyyy`tHH:mm:ss", $null) -gt $nowTime
} |
ForEach-Object {
Write-Output $_
}
推荐阅读
- ios - Mapbox route more 2 注释
- ubuntu - Elasticsearch 集群崩溃
- python - 发生错误,例如 myclass() 没有参数
- ironpython - 为什么 strptime() 不接受我的输入字符串?
- c# - 如何通过 TLS(显式)连接到 FTP 服务器并向其上传文件 [C#]
- git - 我可以在合并到 master 之前检查已经合并到其他分支的更改吗
- input - 如何在朱莉娅的每次击键时读取键盘输入?
- java - java - 如何通过在java中递归连接字符串来生成方程?
- java - 由于 java.util.zip.ZipException,Tomcat 8 组件启动失败
- sql - 如何在选定的字符串中插入逗号?