PowerShell:从csv文件中删除多个entrows

时间:2016-07-07 05:29:06

标签: csv powershell collections

我有一个与csv文件密切配合的脚本。在这些文件中存储不同类型的数据。在某些时候,我想删除这些文件中的来源。

当我想删除单个条目时,我会这样做:

$csv = Import-Csv -Path $path -Delimiter ";"
$selectedEntry = $csv | Out-GridView -Title $title -OutputMode Single
$csv = $csv -notmatch $selectedEntry
$csv | Export-Csv $path -NoTypeInformation -Delimiter ";"

这种方法非常稳定但是如果我将参数-OutputMode从Single更改为Multiple,则以下行不再起作用:

$csv = $csv -notmatch $selectedEntry 

为什么会这样?如何从csv文件中删除多个enys?

1 个答案:

答案 0 :(得分:0)

您应该可以使用数组差异Where-Object子句来执行此操作。

$selectedEntry = $csv | Out-GridView -Title $title -OutputMode Multiple
$filteredCsv = $csv | where { $selectedEntry -notcontains $_ }

这会遍历$csv数组的每个元素,并且只生成那些不在$selectedEntry数组中的元素。