как найти линии, соответствующие множеству шаблонов

Я пытаюсь найти во многих файлах строки, начинающиеся с одного из множества шаблонов (анализ журнала).
Есть ли лучшее решение, чем:

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 У меня нет номера строки, в которой был найден шаблон.

1 ответ

Похоже, я сделал это излишне сложным;)

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 вернет только первую строку

Другие вопросы по тегам