Powershell удалить строку (CSV-файл) на основе сравнения двух столбцов

У меня есть 2 CSV-файла, ни один из которых не отсортирован: структура File1 = имя, местоположение, дата, URL-адрес Структура File2 = имя, URL-адрес

Я пытаюсь использовать powershell для удаления любых строк из File1, содержащих одно и то же имя из File2.

То, что у меня есть, работает очень медленно в зависимости от количества имеющихся у меня записей и того, сколько раз это повторяется.
Есть ли лучший способ сделать это?

$file1 = "file1.csv"
$file2 = "file2.csv"

$f1 = import-csv $file1
$f2 = import-csv $file2

$f1names = $f1.name
$f2names = $f2.name

$difference = compare-object -referenceobject $f1names -differenceobject $f2names -passthru

$results = $difference | % {
$f1 | ? { $f1.name -eq $_}
$f2 | ? { $f2.name -eq $_}
}

person markyodo    schedule 13.04.2015    source источник


Ответы (1)


Посмотрите, не быстрее ли это:

$file1 = "file1.csv"
$file2 = "file2.csv"

$f2Names = import-csv $file2 | select -ExpandProperty Name

Import-Csv $file1 |
Where { $f2Names -notcontains $_.Name }
person mjolinor    schedule 13.04.2015