2012-10-24 57 views
3

我被困在試圖從csv文件中獲得有意義的輸出。Import-CSV GroupBy Sum

原始輸入看起來像這樣。

Col1,Col2,Col3,Col4 
a,2,b,z 
a,2,c,x 
a,1,d,y 
e,1,f,s 
e,2,g,t 
h,1,k,r 

我想達到以下的輸出(不包括COL4),並使用PowerShell的2

a 5 b,c,d 
e 3 f,g 
h 1 k 

代碼從我的腳本功能導出到一個文件,以便進一步的報告是:

 
    $data = import-csv $filename.csv | Select-Object -property Col1,Col2,Col3 
    $view | Group Col1 | ` 
    select Name,@{ 
     Name="Col2Sum"; 
     Expression = { 
     [math]::round(($_.Group | Measure-Object -Sum Col2).Sum/60,2) 
     } 
     } | ` 
    Sort "Col2Sum" -desc | ft -auto -GroupBy Col | out-file $file.txt 

我被卡住的地方是如何在一行中生成Col3的數組並將其正確輸出。

如果有人有任何想法。

回答

1

你可以試試這個:

$a = import-csv C:\temp\F.csv |Group-Object -Property col1 | ` 
     % {$_.name + " " + $_.count + " " + ` 
     ($_.group | % {$i=0;$j=$_.count}{$i++ ; $_.col3 + ","*($j-$i -gt 0)})} 
    $a 

a 3 b, c, d 
e 2 f, g 
h 1 k 

然後

$a = import-csv C:\temp\F.csv |Group-Object -Property col1 | ` 
     % {$_.name + " " + ($_.group | %{$i=0}{$i+=$_.col2}{$i}) + " " + ` 
     ($_.group | % {$i=0;$j=$_.count}{$i++ ; $_.col3 + ","*($j-$i -gt 0)})} 
    $a 

a 5 b, c, d 
e 3 f, g 
h 1 k 
+0

沒錯,就是工作。特別是第二個。 – Kinnara