如何找到与许多模式匹配的线

问题描述 投票:0回答:1

我正在尝试从许多文件中的多种模式之一开始查找行(日志分析)。有没有比以下更好的解决方案:

Get-ChildItem -Filter *DBLog.txt | ForEach-Object {
    $name = $_.Name
    Get-Content -Path $_.FullName | 
    Select-String -Pattern '^Msg*' |
    Select-Object @{Name='File Name'; Expression={$name}}, LineNumber, Line
} |
Out-GridView

不幸的是,以上脚本仅搜索一种模式,并且使用Where-Object我没有找到模式的行号。

powershell foreach get-childitem select-string foreach-object
1个回答
0
投票

看起来好像让我变得不必要的复杂;)

Select-String -Path *DBLog.txt -Pattern '^Msg|^Warn' |
Select-Object FileName, LineNumber, Line |
Out-GridView

但是我还有一个问题……您如何在此添加额外的一行?我要查找的内容(SQL Server错误)用2行写成:

消息208,级别16,状态1,服务器LOCALHOST,第9行无效的对象名称...

Select-String仅返回第一行

© www.soinside.com 2019 - 2024. All rights reserved.