Удаление похожих строк из CSV с помощью другого CSV - PullRequest
0 голосов
/ 28 февраля 2019

Мне нужно удалить строки из одного csv (файл-a), которые соответствуют или частично соответствуют строкам в другом csv (файл-b), на основе адреса электронной почты:

file-a

email,Firstname,Lastname 
Peter@hotmail.com,pete,Smith
Paul@gmail.com,paul,
Mary@hotmail.com,,Jones
puff@yahoo.com,puff,Dragon

файл-b

email,Firstname,Lastname
Peter@hotmail.com,,Smith
Mary@hotmail.com,Mary

файл дедупликации-вывода

email,Firstname,Lastname 
Paul@gmail.com,paul,
puff@yahoo.com,puff,Dragon

Я сталкивался с подобным вопросом здесь:

Удаление похожих строк из двух файлов

Однако, это работает только для точных совпадений, я попытался использовать "notmatch" вместо "не содержит ", но это не сработало.Я совершенно новичок в powershell и не могу понять, что мне нужно делать.Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 28 февраля 2019

Сначала я бы Import-Csv файлы и использовать Compare-Object ограничено свойством email

## Q:\Test\2019\02\28\SO_54929339.ps1

$fileA = Import-csv '.\file-a.csv'
$fileB = Import-csv '.\file-b.csv'

$deduped = Compare-Object -Ref $fileA -Diff $fileB -Property email -PassThru | 
  Where-Object Sideindicator -eq '<=' | 
    Select-Object * -ExcludeProperty Sideindicator

$deduped 
$deduped | Export-Csv '.\deduped-output-file.csv' -NoTypeInformation

Пример вывода:

> Q:\Test\2019\02\28\SO_54929339.ps1

email          Firstname Lastname
-----          --------- ---------
Paul@gmail.com paul
puff@yahoo.com puff      Dragon
...