3

csvファイルから意味のある出力を取得しようとして立ち往生しています。

生の入力は次のようになります。

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を除く)を実現し、PowerShell2を使用してさらにレポートするためにファイルにエクスポートしようとしています。

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

スクリプト関数のコードは次のとおりです。

    $ data = import-csv $ filename.csv | Select-Object -property Col1、Col2、Col3
    $ view | グループCol1| `
    名前を選択、@ {  
      Name = "Col2Sum";
       式={  
         [math] :: round(($_。Group| Measure-Object -Sum Col2).Sum / 60,2)
       }
      } | `
    「Col2Sum」を並べ替える-desc| ft -auto -GroupBy Col | 出力ファイル$file.txt

私が行き詰まっているのは、Col3から1行で配列を生成し、それらを適切に出力する方法です。

誰かが何かアイデアを持っている場合。

4

1 に答える 1

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
于 2012-10-24T18:58:44.823 に答える