Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用powershell在csv中合并两行或多行_Powershell_Powershell 2.0 - Fatal编程技术网

使用powershell在csv中合并两行或多行

使用powershell在csv中合并两行或多行,powershell,powershell-2.0,Powershell,Powershell 2.0,我从我们的一个客户那里收到一个如下的文件:(为了便于处理,我在其中添加了标题)。样本输入: 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,b

我从我们的一个客户那里收到一个如下的文件:(为了便于处理,我在其中添加了标题)。样本输入:

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
步骤:

  • 导入input.csv文件
  • 按planid和事务对对象进行分组
  • 在输出中选择所需的属性
  • PlanId=组对象返回的对象的名称字段中逗号的剩余部分
  • Transaction=组对象返回的对象的名称字段中逗号的右边
  • 金额=每个分组对象的所有金额之和
  • 日期=每个分组对象的日期
  • 类型=每个分组对象的类型
  • Ticker=每个分组对象的Ticker
  • 现金=每个分组对象的现金
  • 将对象导出到output.csv(添加notypeinformation以使用类型信息剥离顶行)

  • 在Excel中执行此操作会比在PowerShell中更简单吗?看起来不太难,我将尝试解决它;D