使用powershell比较两个csv,并返回匹配和不匹配的值 [英] compare two csv using powershell and return matching and non-matching values

查看:344
本文介绍了使用powershell比较两个csv,并返回匹配和不匹配的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个csv文件,我想检查username.csv中的用户与userdata.csv副本是否匹配
到output.csv.如果不匹配,则在output.csv

中单独返回名称

对于Ex:用户数据包含3列

UserName,column1,column2
Hari,abc,123
Raj,bca,789
Max,g123
Arul,987,thr
Prasad,bxa,324

username.csv包含用户名

Hari
Rajesh

Output.csv应该包含

Hari,abc,123
Rajesh,NA,NA

如何实现这一目标.谢谢

对不起.

$Path = "C:\PowerShell"
$UserList = Import-Csv -Path "$($path)\UserName.csv"
$UserData = Import-Csv -Path "$($path)\UserData.csv"

foreach ($User in $UserList)
{
    ForEach ($Data in $UserData)
    {
        If($User.Username -eq $Data.UserName)
        {
            # Process the data

            $Data
        }
    }
}

这仅返回匹配的值.我还需要在输出中添加不匹配的值 文件.谢谢.

解决方案

类似的方法将起作用:

$Path = "C:\PowerShell"
$UserList = Import-Csv -Path "$($path)\UserName.csv"
$UserData = Import-Csv -Path "$($path)\UserData.csv"
$UserOutput = @()

    ForEach ($name in $UserList)
    {

        $userMatch = $UserData | where {$_.UserName -eq $name.usernames}
        If($userMatch)
        {
            # Process the data

            $UserOutput += New-Object PsObject -Property @{UserName =$name.usernames;column1 =$userMatch.column1;column2 =$userMatch.column2}
        }
        else
        {
        $UserOutput += New-Object PsObject -Property @{UserName =$name.usernames;column1 ="NA";column2 ="NA"}
        }
    }
$UserOutput | ft

它循环遍历用户列表中的每个名称.第9行在找到匹配的用户名时在userdata CSV中进行搜索,如果找到匹配的用户名,则会在输出中添加该用户的用户数据(如果未找到匹配项),则将用户名添加到输出中,两列均为NA.

必须更改您的userList csv:

usernames
Hari
Rajesh

预期输出:

UserName                          column1                           column2                         
--------                          -------                           -------                         
Hari                              abc                               123                             
Rajesh                            NA                                NA 

I have two csv files, i want to check the users in username.csv matches with userdata.csv copy
to output.csv. If it does not match return the name alone in the output.csv

For Ex: User Data contains 3 columns

UserName,column1,column2
Hari,abc,123
Raj,bca,789
Max,ghi,123
Arul,987,thr
Prasad,bxa,324

username.csv contains usernames

Hari
Rajesh

Output.csv should contain

Hari,abc,123
Rajesh,NA,NA

How to achieve this. Thanks

Sorry for that.

$Path = "C:\PowerShell"
$UserList = Import-Csv -Path "$($path)\UserName.csv"
$UserData = Import-Csv -Path "$($path)\UserData.csv"

foreach ($User in $UserList)
{
    ForEach ($Data in $UserData)
    {
        If($User.Username -eq $Data.UserName)
        {
            # Process the data

            $Data
        }
    }
}

This returns only matching values. I also need to add the non-matching values in output file. Thanks.

解决方案

something like this will work:

$Path = "C:\PowerShell"
$UserList = Import-Csv -Path "$($path)\UserName.csv"
$UserData = Import-Csv -Path "$($path)\UserData.csv"
$UserOutput = @()

    ForEach ($name in $UserList)
    {

        $userMatch = $UserData | where {$_.UserName -eq $name.usernames}
        If($userMatch)
        {
            # Process the data

            $UserOutput += New-Object PsObject -Property @{UserName =$name.usernames;column1 =$userMatch.column1;column2 =$userMatch.column2}
        }
        else
        {
        $UserOutput += New-Object PsObject -Property @{UserName =$name.usernames;column1 ="NA";column2 ="NA"}
        }
    }
$UserOutput | ft

It loops through each name in the user list. Line 9 does a search of the userdata CSV for a matching user name if it finds it it adds the user data for that user to the output if no match is found it adds the user name to the output with NA in both columns.

had to change your userList csv:

usernames
Hari
Rajesh

expected output:

UserName                          column1                           column2                         
--------                          -------                           -------                         
Hari                              abc                               123                             
Rajesh                            NA                                NA 

这篇关于使用powershell比较两个csv,并返回匹配和不匹配的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆