如何从powershell中的两个字段中删除不符合条件的csv中的行?

时间:2016-03-24 16:57:04

标签: csv powershell

我正在尝试编写一个单行脚本来接受一个csv文件,然后导出每个没有$ file.Source的行,以" 10开头。"以" 10开始的$ file.Destination。"。这是我到目前为止的代码:

Import-Csv $importFile | where -NotMatch {$_.Source.StartsWith("10.1") -and $_.Destination.StartsWith("10.")} Export-Csv $exportFile

1 个答案:

答案 0 :(得分:0)

这听起来像是在Where-Object子句的上下文中使用-not运算符的好例子。

例如:

Import-Csv $importFile | 
where {-not $_.Source.StartsWith("10.") -and -not $_.Destination.StartsWith("10.")} |
Export-Csv $exportFile

如果您的SourceDestination列可能会使用数值数据类型,则可以在调用.ToString()之前调用.StartsWith()的值。

Import-Csv $importFile | 
where {-not $_.Source.ToString().StartsWith("10.") -and -not $_.Destination.ToString().StartsWith("10.")} |
Export-Csv $exportFile

提示:如果您想在导出CSV文件之前查看Where-Object过滤的结果,可以将Export-Csv $exportFile替换为ConvertTo-Csv。该cmdlet只返回原始CSV字符串。