【发布时间】:2014-08-15 21:14:07
【问题描述】:
我只是在学习 powershell,但遇到了这个让我难过的错误。目标是获取一个 csv 文件并确定文件中有多少组。每个组下会有多个条目。最终结果是根据组将文件拆分为不同的数组/字典/whathaveyou(我在 3 小时前开始使用 powershell ..),保持 TaxonID 完整,然后将它们导出到单独的文件中。但现在,我只是在比较阶段。
我的练习数据是这样的
Group,TaxonID
AA,1
AA,2
BB,3
BB,4
真实数据如下:
Group,TaxonID
Bilateria_Ropsin,Mus_musculus_Rhabdomeric_MEL
Bilateria_Ropsin,ROp_OG3TodaroP
为此,我尝试将一行中的组与下一行中的组进行比较。如果它们不同,那么我将一个变量添加到变量中以供以后使用。这是我要做的比较:
Set-Variable -name book -value C:\Users\XXX\Documents\Book1.csv
$work = Import-Csv $book
$numgroups = 0
$i=0
foreach ($Group in $work) {
$Ogroup = $work[$i] | select-object{$_.Group}
$nextGroup = $work[$i+1] | select-object{$_.Group}
$compare = $Ogroup.Equals($nextGroup)
$compare
$i++
}
当我打印出 $Ogroup 和 $nextGroup 时,它们会给我正确的对(AA AA、AA BB、BB BB),但 $compare 总是打印出错误的。使用 Compare-Object 会给我一个关于 $nextGroup 为 null 的错误。所以我选择使用 .Equals()。 CompareTo() 抛出一个关于它不是有效方法的错误。
我很困惑,需要帮助。
【问题讨论】:
-
你会提前知道会有多少组吗?
-
很遗憾没有,我现在只是在进行比较。完成后,我可以将变量 $numgroups 绑定到动态创建我需要的组数......无论如何,这就是计划
-
我确信我可以提供帮助,但我觉得在宏伟的计划中,当您将整个项目考虑在内时,我们正在寻找一个徒劳的练习。为什么要比较 PowerShell 何时可以为您将事物分组?
-
听起来不错!我只是在学习,所以我确信我的方法不是最好的。分类单元的分组从它们的值来看并不直观,并且允许重复条目(即多个组中的相同分类单元)。我将编辑 OP,以便您查看实际示例的外观。也许这会有所帮助?
标签: powershell csv