选择字符串错误分割线

时间:2016-06-16 16:04:51

标签: arrays parsing powershell select-string

我为我的实习做了一个解析器。除了我遇到一个非常奇怪的错误,它对错误消息解析的一部分产生巨大影响之外,它一直运行得很好。

我用select-string抓取一行并将其分配给变量$excluded。然后,我缩小搜索范围,以获取由于真实错误导致的可忽略的错误代码。这是它变得奇怪的地方。如果有多个错误行选择字符串抓取,它会使每一行成为数组的一部分(我认为它是如何工作的),以便我解析出错误消息工作正常。但是,如果只有一个错误行,则需要该错误行并将每个数字拼接成一列,即多行数组。我的解析器分别获取每一行并排除错误代码(如果它是多个错误,它会完美地完成)。

以下是我的代码中的文本抓取部分,以便您可以了解我正在解释的内容。

#If there is "EXCLUDED" then select those lines and extract the device code from them
$excluded = (Select-String -Path $report -Pattern EXCLUDED | Select-String -Pattern $eliminations -NotMatch).Line

这是我正在抓取的文本文件的一部分(示例),如果它不起作用。

027:01:1e:01:06 SRB:Phy00 EXCLUDED FROM TEST - GOERR IS SET

现在我拿了那条线,我复制/粘贴了它并更改了前3位数字(设备代码)

027:01:1e:01:06 SRB:Phy00 EXCLUDED FROM TEST - GOERR IS SET
028:01:1e:01:06 SRB:Phy00 EXCLUDED FROM TEST - GOERR IS SET

第二组文本(应该如何看待)

$excluded[0] = 027:01:1e:01:06 SRB:Phy00 EXCLUDED FROM TEST - GOERR IS SET
$excluded[1] = 028:01:1e:01:06 SRB:Phy00 EXCLUDED FROM TEST - GOERR IS SET

但是,对于单一错误行,这就是出现的问题

$excluded[0] = 0
$excluded[1] = 2
$excluded[2] = 7

我很困惑为什么会这样。我已经使用多个错误代码,频率对其进行了测试,这种情况发生在所有错误代码中,其中只有一行传递给$excluded

谁能告诉我为什么会这样?

0 个答案:

没有答案