我为我的实习做了一个解析器。除了我遇到一个非常奇怪的错误,它对错误消息解析的一部分产生巨大影响之外,它一直运行得很好。
我用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
。
谁能告诉我为什么会这样?