3

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

私の最終的な目標は、1つの列から重複していない値を見つけることです。

4

3 に答える 3

4

申し訳ありませんが、そのようなものは存在しないと思います。私は一緒に行きます:

@($my_array | foreach { $_[1] })

一意の値をすばやく見つけるために、ハッシュテーブルキーハックを使用する傾向があります。

$UniqueArray = @($my_array | foreach -Begin { 
    $unique = @{} 
} -Process { 
    $unique.($_[1]) = $null
} -End { 
    $unique.Keys 
})

明らかにそれはそれに制限があります...

于 2012-06-24T18:03:45.263 に答える
2

1つの列を抽出するには:

$single_column = $my_array | foreach { $_[1] }

列を抽出するには:

$some_columns = $my_array | foreach { ,@($_[2],$_[1]) }   # any order

1つの列から重複していない値を検索するには:

$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
于 2012-06-24T19:15:49.387 に答える
0

@BartekBのソリューションを試しましたが、うまくいきました。しかし、ユニークな部分のために、私は次のことをしました。

@($my_array | foreach { $_[1] } | select -Unique)

私はPowerShellにあまり詳しくありませんが、PowerShellが機能したので、他の人に役立つことを願って投稿しています。

于 2021-03-15T06:54:16.630 に答える