繁体   English   中英

使用Powershell在CSV中合并两行或更多行

[英]Combine two or more rows in a csv using powershell

我从一个客户那里收到一个文件,看起来像这样:(我在文件头中添加了标题,以便于处理)。 输入样例:

PlanID,Date,Transaction,Type,Ticker,Amount,Cash
01,121211,div,mf,fjk,25,cash
01,121211,div,mf,fjk,30,cash
01.121211,buy,mf,fjk,55,cash
02,121211,div,sd,ejd,10,cash
02,121211,div,sd,ejd,15,cash
02,121211,buy,sd,ejd,25,cash

我需要一种通过汇总每个PlanID的金额将所有行与Transaction ='div'合并的方法。 这就是我希望输出看起来像的样子:

样本输出:

PlanID,Date,Transaction,Type,Ticker,Amount,Cash
01,121211,div,mf,fjk,55,cash
01.121211,buy,mf,fjk,55,cash
02,121211,div,sd,ejd,25,cash
02,121211,buy,sd,ejd,25,cash

因此,在购买行之前只有一个div行(加总金额将始终是购买金额)。 任何想法如何解决这一点将不胜感激?

在此先感谢!

Import-Csv input.csv | Group-Object planid, transaction | 
Select @{n="PlanId";E={($_.name -split ',')[0]}},
       @{n="Date";e={($_.group)[0].date}}, 
       @{n="Transaction";E={(($_.name -split ',')[1]).trim()}},
       @{n="Type";e={($_.group)[0].type}},  
       @{n="Ticker";e={($_.group)[0].ticker}}, 
       @{n="Amount";e={($_.group | measure-object amount -sum).sum}},
       @{n="Cash";e={($_.group)[0].cash}} |
Export-Csv output.csv -NoTypeInformation

脚步:

  1. 导入input.csv文件
  2. 按平面和交易对对象进行分组
  3. 在输出中选择所需的属性
    1. PlanId =组对象返回的对象的名称字段中逗号剩余的部分
    2. 事务=组对象返回的对象的名称字段中逗号的右边
    3. 金额=每个分组对象的所有金额之和
    4. 日期=每个分组对象的日期
    5. 类型=每个分组对象的类型
    6. 股票代号=每个分组对象的股票代号
    7. 现金=每个分组对象的现金
  4. 将对象导出到output.csv(添加notypeinformation删除带类型信息的顶行)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM