使用powershell根据csv中其他列中的唯一条目添加多个列 [英] Add multiple columns based on unique entries in other column in csv with powershell
问题描述
在过去一年里,我对powershell做了一些基本的工作,但由于某种原因,这是逃避我的。任何帮助将不胜感激。
I've done some basic work with powershell over the last year, but for some reason this is evading me. Any help would be appreciated.
我有一个csv文件,将有几百个条目:
I have a csv file that will have several hundred entries:
Path,Data,Files
\\someserver\somepath1,100,1
\\someserver\somepath2,150,4
\\someserver\somepath1,200,5
\\someserver\somepath3,450,8
\\someserver\somepath4,200,23
\\someserver\somepath1,350,2
\\someserver\somepath2,800,9
我想让powershell脚本解析文件,并生成一个新的csv,其结果显示唯一的路径和汇总的数据和文件值。所以从上面我的预期结果(最好按最大数据值排序):
I'd like to have the powershell script parse through the file and produce a new csv with results that show the unique paths and summed data and files values. So from the above my expected results would be (preferrably sorted by largest data value):
Path,Data,Files
\\someserver\somepath2,950,9
\\someserver\somepath1,650,8
\\someserver\somepath3,450,8
\\someserver\somepath4,200,23
我找到几个答案,单列,但我还没有想出它的两列。对代码和/或技术的任何建议将非常感谢。感谢!
I've found several answers referring to summing a single column, but I haven't figured out it out for two columns yet. Any suggestions on both code and/or technique would be greatly appreciated. Thanks!
推荐答案
丑陋的代码...
$csv=Import-Csv c:\temp\test.csv
$csv | select -Unique -expand path|%{
$path=$_
$sdata=($csv | ?{$_.path -eq $path} | measure-object data -sum).sum
$files=($csv | ?{$_.path -eq $path} | Measure-Object files -sum).sum
"$path,$sdata,$files" |out-file c:\temp\new.csv -append
}
这篇关于使用powershell根据csv中其他列中的唯一条目添加多个列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!