Получить предыдущую строку при чтении файла журнала в Powershell - PullRequest
0 голосов
/ 25 января 2019

У меня есть файл журнала, который я читаю и получаю то, что мне нужно.Но у меня есть дополнительная проблема.

Я хочу получить строку, которая находится перед строкой с ключевым словом «Ошибка»

Я пытался использовать

Get-Content -Path $File -Tail 2  | Select-String -Pattern $Patterns -Context 1,0 -SimpleMatch

Этотакже дает мне вывод, который мне нужен.Но после этого я хочу извлечь данные из двух строк.Могу ли я использовать цикл foreach на выходе?

$Patterns  = @('execution ended')

$File= "C:\GProcess\log.txt"
#-Context 1,0
Get-Content -Path $File -Tail 2  | Select-String -Pattern $Patterns -Context 1,0 -SimpleMatch

Текущий вывод -

  Process failed as there was an error
> Process execution ended

Возможно, я просто хочу Process failed as there was an error, но поиск по ключевому слову "выполнение закончен"

Надеюсь, я правильно объяснил свой запрос.

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Вы можете получить только строку (и) контекста напрямую.

$match = Get-Content -Path $File  | Select-String -Pattern $Patterns -Context 1,0 -SimpleMatch
$match.Context.PreContext
0 голосов
/ 25 января 2019

Приведенный ниже код даст вам номер строки для поиска строки, вместо использования -tail.

Если у вас это есть, вы можете закодировать дополнительный бит, который вам нужен, чтобы довольно легко захватить строку выше или ниже.

(Get-Content -Path 'C:\GProcess\log.txt' | Select-String -Pattern 'error').LineNumber
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...