2012-02-18 10 views
4

カウントIがあったし、それが、これは5なぜ私はPowerShellで、この出力は、ソート-unique

> $var = @(2,4,2,5,3,6,34,6,3,6,4,6,3,5,5,353,5343,5,3,56,34) 
>$var | sort -Unique 
2 
3 
4 
5 
6 
34 
56 
353 
5343 
>$var | sort -Unique Count 
5 
を与える理由を私は知らない私に5を与えたどのように多くのユニークなオブジェクトを見つけるために、次のコマンドを入力したのですか
+0

良い質問です!これは私のバグのようです... 5はパラメータ '-Property'から来ているようですが、私はなぜそれがわかりません。 '-Property'は任意の文字列を取っているようです...返される数字は、入ってくるリストの項目だけです。たとえば、' 1,4,6,12,65,3,13 | Sort-Object -Unique -Property itsABugMaybe'は '65'を返します。これを投稿したいかもしれません[ここ](http://connect.microsoft.com/PowerShell) –

+0

おかげで、あなたが提案した通りに投稿しました。 - https://connect.microsoft.com/PowerShell/feedback/details/725505/powershell-returning-invalid-number-for-this-command – Mitul

+0

素晴らしい。私はそれを投票した。 –

答えて

6

$var | sort -Unique COUNTは同じです::私はあなたがの後にあるかもしれないものだと思い

$var | sort -Unique -Property COUNT

だから何ソートを行っているが内の各要素の「COUNT」プロパティを探していますそれらが一意であるかどうかを判断するための配列。あなたは以下ならば、これはどのように動作するかを見ることができます:

GPS sv* | sort -Unique ID 
GPS sv* | sort -Unique Name 

オブジェクトのどれもが「COUNT」性質を持っていないので、ソート同じので、どれもそれらすべてを見て一意であり、それは次のいずれかを返します要素。この手がかりは、次のように試してみたものです。

$var = $("a", "b", "c", "b") 
$var | sort -Unique count 

これは結果 "c"を生成しました。トリックを行う必要があります

$var |sort -Unique |measure 

尺度は、ここにあなたの友達です。

+0

"それは要素の1つを返す"ので、リスト内の値をランダムに返しますか?リストに要素を追加しないと、同じ要素が返されるようです。 – ca9163d9

3

私はなぜそれがどちらかを行っているのか分かりませんが、-sortにはcountパラメータがありません。

$var = @(2,4,2,5,3,6,34,6,3,6,4,6,3,5,5,353,5343,5,3,56,34) 
($var | sort -Unique).count 
+0

文字列「Count」は何らかの理由で入ってくるオブジェクトからアイテムの1つを出力している '-Property'(位置1)の位置を埋めています。 –

+0

確かにあなたの答えはそれを行う正しい方法です。私はなぜここで背後にあるのか理解しようとしていました。応答していただきありがとうございます。 – Mitul