Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 将两个CSV与powershell进行比较,并将一个CSV的值转换为另一个CSV的值_Windows_Powershell_Csv_Compare - Fatal编程技术网

Windows 将两个CSV与powershell进行比较,并将一个CSV的值转换为另一个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

我在powershell中有两个csv,我正试图从中提取数据并将其放入csv。例如: contacts.csv和第一封、最后一封电子邮件 带有第一封、最后一封电子邮件的mailinglist.csv

MailingList电子邮件为空,我需要从contacts.csv中提取电子邮件地址

Mailinglist中有一些联系人,但不是全部,如contacts.csv。我只需要从contacts.csv中提取Mailinglist.csv中匹配的行的电子邮件地址

到目前为止,我已经:


    $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
,或交换变量。