Windows 将两个CSV与powershell进行比较,并将一个CSV的值转换为另一个CSV的值
我在powershell中有两个csv,我正试图从中提取数据并将其放入csv。例如: contacts.csv和第一封、最后一封电子邮件 带有第一封、最后一封电子邮件的mailinglist.csv MailingList电子邮件为空,我需要从contacts.csv中提取电子邮件地址 Mailinglist中有一些联系人,但不是全部,如contacts.csv。我只需要从contacts.csv中提取Mailinglist.csv中匹配的行的电子邮件地址 到目前为止,我已经:Windows 将两个CSV与powershell进行比较,并将一个CSV的值转换为另一个CSV的值,windows,powershell,csv,compare,Windows,Powershell,Csv,Compare,我在powershell中有两个csv,我正试图从中提取数据并将其放入csv。例如: contacts.csv和第一封、最后一封电子邮件 带有第一封、最后一封电子邮件的mailinglist.csv MailingList电子邮件为空,我需要从contacts.csv中提取电子邮件地址 Mailinglist中有一些联系人,但不是全部,如contacts.csv。我只需要从contacts.csv中提取Mailinglist.csv中匹配的行的电子邮件地址 到目前为止,我已经: $co
$contacts = Import-Csv .\contacts.csv
$mailing = Import-Csv .\mailing.csv
$compare = $mailing | select $_ | $_ -notcontains $contacts
$email = $contacts | Select $_ | Where { $_ -contains $compare }
$compare为我提供了正确的第一列和最后一列。正确的是,它只返回与$mailing匹配的值,而不返回任何其他值
$email变量返回为空
帮忙?我有一个包含850条记录的电子表格,我真的不想手动执行…您正在寻找的是所谓的“左连接”。尝试四处搜索联接(可能是) 来自的这个很好的解释将帮助您了解在Powershell中需要什么,您应该可以找到一些适用的示例。 有几种类型的联接,如“”和“左/右联接” Powershell没有用于加入的强大内置函数,因此您可能需要一两个小函数 不过,只需查看代码,您可能希望尝试更改:
其中{$\包含$compare}
致:
其中{$compare-包含$}
您正在寻找的称为“左连接”。尝试四处搜索联接(可能是)
来自的这个很好的解释将帮助您了解在Powershell中需要什么,您应该可以找到一些适用的示例。
有几种类型的联接,如“”和“左/右联接”
Powershell没有用于加入的强大内置函数,因此您可能需要一两个小函数
不过,只需查看代码,您可能希望尝试更改:
其中{$\包含$compare}
致:
其中{$compare-包含$}
以下是使用比较对象
的解决方案
Compare-Object $contacts $mailing -Property First,Last -IncludeEqual -ExcludeDifferent -PassThru |
select * -ExcludeProperty SideIndicator
以下是使用
比较对象
的解决方案
Compare-Object $contacts $mailing -Property First,Last -IncludeEqual -ExcludeDifferent -PassThru |
select * -ExcludeProperty SideIndicator
将
-notcontains
更改为-notin
和-contains
更改为-in
,或交换变量。将-notcontains
更改为-notin
和-contains
更改为-in
,或交换变量。