をフィルタリング:私は先頭の2つの文字に基づいて、配列にユニークな値を抽出したいのPowershell - 私は次のサンプルのような情報を含む列を持つ入力CSVファイルたユニーク値の
805265
995874
805674
984654
332574
339852
を上記のサンプルを使用して、私の結果は次のようになります。
80、99、98、33
どのように私はこの使用してPowerShellを実現するのでしょうか?
をフィルタリング:私は先頭の2つの文字に基づいて、配列にユニークな値を抽出したいのPowershell - 私は次のサンプルのような情報を含む列を持つ入力CSVファイルたユニーク値の
805265
995874
805674
984654
332574
339852
を上記のサンプルを使用して、私の結果は次のようになります。
80、99、98、33
どのように私はこの使用してPowerShellを実現するのでしょうか?
私はこのためにGroup-Object
コマンドレットを使用したい:
Import-Csv foo.csv | Group {$_.ColumnName.Substring(0,2)} Count Name Group ----- ---- ----- 2 80 {805265, 805674} 1 99 {995874} 1 98 {984654} 2 33 {332574, 339852}
使用Select-Object
とパラメータ-unique
:intへの変換が必要な場合
$values =
'805265',
'995874',
'805674',
'984654',
'332574',
'339852'
$values |
Foreach-Object { $_.Substring(0,2) } |
Select-Object -unique
、そしてちょうど[int]
にキャスト:
$ints =
$values |
Foreach-Object { [int]$_.Substring(0,2) } |
Select-Object -unique
は、あなたが最初の二つを含むアイテムを持つ新しい配列を作ることができます次にSelect-Item
を使用して、このようなユニークなアイテムを提供してください:
$newArray = @()
$csv = import-csv -Path C:\your.csv
$csv | % {
$newArray += $_.YourColumn.Substring(0,2)
}
$newArray | Select-Object -Unique
あなたはハッシュテーブルを使用する場合があります。
$values = @(805265,995874,805674,984654,332574,339852)
$ht = @{}
$values |foreach {$ht[$_ -replace '^(..).+','$1']++}
$ht.keys
99
98
33
80
私はPowerShellのにかなり新たなんだと、このコマンドレットについては知りませんでした。お返事ありがとうございます...私はこれを使用してかなりのステップをまとめることができます。ブリリアント! – Temple