解析导入的CSV

时间:2014-11-02 12:16:08

标签: powershell csv

我正在尝试使用Import-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。最后,破折号必须由/替换。最终结果必须是这样的:

2014/01/23 13:49:38

我尝试使用-replace将“T”更改为此链接后面的空格:http://blogs.technet.com/b/heyscriptingguy/archive/2011/03/21/use-powershell-to-replace-text-in-strings.aspx。但是,这对我不起作用。

我是否想立刻做太多事?

1 个答案:

答案 0 :(得分:0)

尝试从字符串中解析DateTime可能会有更优雅的解决方案但是非常简单的

("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一样清理字符串,但是使用该函数会变得多余。其他人可能有更清洁的方法