【发布时间】:2015-12-02 21:21:22
【问题描述】:
我正在尝试从以下示例中获取完整的错误:
date time somemethod EXC somenumber sometext R:System.NullReferenceException: Object reference not set to an instance of an object.
at sometext in somepath .cs:line somenumber System.NullReferenceException: Object reference not set to an instance of an object.
at sometext in Somepath .cs:line somenumber
从那以后,我想得到EXC 之后直到cs:line somenumber 的所有内容。
01/01/01 date (mode) (status) (somenumber) (name+error),这里通常有一个新行继续错误消息,并以字符 cs:line (number) 结尾。
我设法收到错误消息,因为它总是以 EXC 开头(所以正则表达式是 EXC .*,但是我无法获得带有代码的完整消息。我只能访问 PowerShell 2.0,我正在使用以下公式:
$Filecontent = [io.file]::Readalltext("path to file")
$filecontent | select-string 'EXC .*' -allmatches |
foreach {$_.Matches} | Foreach {$_.Value} > errors.txt
我需要的是获取行号的完整错误,但我有正确的正则表达式问题。我不关心日期、时间、模式,正则表达式应该获得 EXC 状态并使用 line 获取完整消息。
使用正则表达式 'EXC .*\n.*cs:line [0-9]{0,99}' 后,它会为我找到那些在一行完成后出现错误消息的消息,但是,有时会有更多的下一行我也想捕捉。 有什么想法吗?
【问题讨论】:
-
公式中的错字,已修复:$Filecontent = [io.file]::Readalltext("path to file") $filecontent |选择字符串'EXC。' -allmatches | foreach {$_.Matches} | Foreach {$_.Value} > errors.txt
标签: regex powershell powershell-2.0