2014-11-02 200 views
0

我試圖使用Import-CSV命令行解析.csv文件,如下圖所示:解析進口CSV

$lease_import = ipcsv -Path 'C:\leases.csv'-Delimiter "," | where { 
     ($_.binding_state -ne "ABANDONED") -and ($_.mac_address -ne "") -and (($_.ends -replace "T"," ")-match "2014") 
} 

一般的「末端」字段在這個CSV看起來是這樣的:2014-01-23T13:49:38.000Z。我想用空格替換'T',我想用空字符串替換.000Z。最後,破折號將不得不被a /替換。最終的結果將必須沿着這個線的東西:http://blogs.technet.com/b/heyscriptingguy/archive/2011/03/21/use-powershell-to-replace-text-in-strings.aspx

2014/01/23 13:49:38 

我嘗試用-replace改變「T」到以下鏈接一個空間開始簡單。但是,這對我不起作用。

我想一次做得太多嗎?

回答

0

有可能試圖通過解析日期時間出來的字符串,而是一個非常簡單的人會

("2014-01-23T13:49:38.000Z".TrimEnd(".000Z") -Replace "T"," ") -replace "-","/" 

這將返回

2014/01/23 13:49:38 

在你的循環,這將看起來更優雅的解決方案像

($_.ends.TrimEnd(".000Z") -Replace "T"," ") -replace "-","/" 

代替.TrimEnd()你可以做一個其他Replace,但因爲TrimEnd是有刪除尾隨字符爲什麼不使用它。

我曾嘗試使用類似[datetime]::ParseExact之類的東西,但它們需要有乾淨的字符串而沒有額外的數據,否則會出現分析錯誤。您可以像使用-replace一樣清理字符串,但是使用該函數會變得多餘。其他人可能有一個更清潔的方法

+0

對不起,它完美的作品,但我有點困惑如何將它集成到導入CSV。你是指一個新的,不同的循環? – Simplexity 2014-11-02 13:09:50

+0

@Simplexity你真的不說你想做什麼,所以我不能回答。你在做什麼數據? – Matt 2014-11-02 13:17:19

+0

我的不好,我犯了一個明顯的錯誤。最後一個問題;如何使用TrimEnd()刪除最後6個字符(假設前兩個字符是隨機的)? – Simplexity 2014-11-02 13:29:56