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