0

我为我的实习做了一个解析器。一切都很顺利,除了我遇到了一个非常奇怪的错误,它对部分错误消息解析有巨大影响。

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

这是我的代码的文本抓取部分,因此您可以了解我在解释什么。

#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 被排除在测试之外 - GOERR 已设置

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

027:01:1e:01:06 SRB:Phy00 被排除在测试之外 - GOERR 已设置
028:01:1e:01:06 SRB:Phy00 被排除在测试之外 - GOERR 已设置

第二组文本(它应该看起来如何)

$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.

谁能告诉我这是为什么?

4

0 回答 0