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)并导出到文件以使用 PowerShell 2 进行进一步报告。

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

我的脚本函数中的代码是:

    $data = 导入-csv $filename.csv | 选择对象-属性 Col1、Col2、Col3
    $查看 | 组 Col1 | `
    选择姓名,@{  
      名称="Col2Sum";
       表达式 = {  
         [数学]::round(($_.Group | Measure-Object -Sum Col2).Sum/60,2)
       }
      } | `
    排序“Col2Sum”-desc | ft -auto -GroupBy Col | 输出文件 $file.txt

我被卡住的地方是如何在一行中从 Col3 生成数组并正确输出它们。

如果有人有任何想法。

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 回答