2016-07-07 5 views
1

У меня есть сценарий, который интенсивно работает с файлами csv. В этих файлах хранятся разные типы данных. В какой-то момент я хочу удалить записи из таких файлов.PowerShell: удалить несколько записей из файла 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 параметра от одного до Multiple, следующая строка не работает больше:

$csv = $csv -notmatch $selectedEntry 

Почему это так? Как удалить несколько записей из файла csv?

+0

Являются ли '$ selectedEntry' и' $ item', которые должны быть той же переменной? –

+0

Извините, yep, '$ item' предполагается, что это' $ selectedEntry', я отредактировал его в вопросе. Спасибо за ваш быстрый ответ! Оператор NotContains работает отлично. –

ответ

0

Вы должны быть в состоянии сделать это с помощью разностного массива Where-Object.

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

Это перебирает каждый элемент массива $csv, и производит только те, которые не в $selectedEntry массиве.

Смежные вопросы