是否有一个函数,方法或语言结构允许从Powershell中的多维数组中检索单个列?
$my_array = @()
$my_array += ,@(1,2,3)
$my_array += ,@(4,5,6)
$my_array += ,@(7,8,9)
# I currently use that, and I want to find a better way:
foreach ($line in $my_array) {
[array]$single_column += $line[1] # fetch column 1
}
# now $single_column contains only 2 and 5 and 8
我的最终目标是从一列中找到非重复值。
答案 0 :(得分:4)
对不起,我认为不存在这样的事情。我会选择:
@($my_array | foreach { $_[1] })
为了快速找到唯一值,我倾向于使用哈希表密钥hack:
$UniqueArray = @($my_array | foreach -Begin {
$unique = @{}
} -Process {
$unique.($_[1]) = $null
} -End {
$unique.Keys
})
显然它有局限性......
答案 1 :(得分:2)
提取一列:
$single_column = $my_array | foreach { $_[1] }
提取任何列:
$some_columns = $my_array | foreach { ,@($_[2],$_[1]) } # any order
从一列中查找非重复值:
$unique_array = $my_array | foreach {$_[1]} | sort-object -unique
# caveat: the resulting array is sorted,
# so BartekB have a better solution if sort is a problem
答案 2 :(得分:0)
我尝试了@BartekB 的解决方案,它对我有用。但对于独特的部分,我做了以下工作。
@($my_array | foreach { $_[1] } | select -Unique)
我对 powershell 不是很熟悉,但我发布这个是希望它可以帮助其他人,因为它对我有用。