2011-12-20 67 views
0

我從我們的客戶端收到一個如下所示的文件:(我爲此添加了標題以便於處理)。示例輸入:使用powershell在csv中組合兩個或更多行

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 

我需要一種方法將所有行與Transaction ='div'相加,然後總結每個PlanID的金額。這是我希望我的輸出看起來像:

樣本輸出:

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 

所以,只有一個格列買入前行(與總結量,將永遠是買入量)。任何想法如何處理這將不勝感激?

非常感謝!

+0

在Excel中而不是在PowerShell中執行此操作會更簡單嗎? – Abbas 2011-12-20 19:33:26

+0

這看起來不太難,我要試着解決它,; D – mjsr 2011-12-20 20:23:31

回答

4
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. 集團通過planid和交易
  3. 選擇你的輸出你想要的屬性的對象
    1. PlanId =無論在組對象名稱字段中的逗號左側是什麼
    2. 事務=無論是就在由基團的對象返回的對象的名稱字段中的逗號的
    3. 金額=每分組對象的所有量
    4. 日期=每分組的對象
    5. 類型=類型的時間的總和每分組的對象
    6. 定單=每分組的對象股票
    7. 現金每分組的對象=現金
  4. 導出的對象output.csv(添加notypeinformation剝離頂行機智h類型信息)
+0

我幾乎在那裏!你擊敗了我,很好的代碼! – mjsr 2011-12-20 20:43:29

相關問題