使用powershell根据csv中其他列中的唯一条目添加多个列 [英] Add multiple columns based on unique entries in other column in csv with powershell

查看:619
本文介绍了使用powershell根据csv中其他列中的唯一条目添加多个列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在过去一年里,我对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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆