我需要解析一个文本文件并从中检索数据...基于同一文件中的其他数据。
我需要找到说不好的行..然后找到它们所在的节点。
我知道如何将数据拉入..并找到“不好的”和“节点”。我也有一个想法,我确定要查找的内容过于复杂。我可以将Node行解析为一个数组
$test = (select-string -path C:\error.txt -Pattern "Node:").linenumber
然后找到不正常的行号并备份大声笑,但这似乎是最困难的方法。我熟悉PS,但不是专家。
$test2 = (select-string -path C:\error.txt -Pattern "Not ok").linenumber
所以说出我需要的..
解析节点的文件..找到下面的行不行..如果是,则将节点设置为变量...如果行不行,则找不到下一个节点。
谢谢你的帮助
下面的示例txt文件
Node: Server
*********************
Line 1 ok
line 2 ok
line 3 ok
Line 4 Not ok
line 5 ok
line 6 ok
*********************
Node: Server2
*********************
Line 1 ok
line 2 ok
line 3 Not ok
Line 4 ok
line 5 ok
line 6 ok
*********************
最佳答案
$errorNodes = @()
Get-Content C:\temp\test.txt | ForEach-Object {
if ($_ -imatch 'Node: (.+)$') {
$node = $Matches[1]
}
if ($_ -imatch 'not ok') {
$errorNodes += $node
}
}
$errorNodes
说明
Get-Content
逐行读取文件。 $node
变量设置为当前节点的名称。 $errorNodes
。因此,最后,
$errorNodes
将包含有问题的节点。关于parsing - 给定重复的部分,如何使用Powershell查找与某些条件匹配的部分,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25319762/