2014-11-02 115 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