как найти линии, которые соответствуют многим образцам - PullRequest
0 голосов
/ 27 апреля 2020

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

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 Ответ

0 голосов
/ 28 апреля 2020

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

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

, но у меня есть дополнительный вопрос ... как добавить к этому дополнительную строку? То, что я ищу (SQL Ошибки сервера), записывается в 2 строки:

Сообщение 208, Уровень 16, Состояние 1, LOCALHOST сервера, Строка 9
Неверное имя объекта…

, а Select-String вернет только первую строку

...