我有两个csv文件,我想比较两个文件并找到差异。它包含user_id
我尝试使用compare-object,diff但无法实现。
像
AD_Users.csv
Oracle_Users.csv
都包含用户ID,输出应该像
Oracle中不存在AD用户
AD中不存在Oracle用户
例如 - K9988484 J8485888
我尝试使用compare-object,diff但无法实现。
答案 0 :(得分:0)
Pretty Diff会以更容易阅读的输出格式区分CSV文件,但它不适用于CLI。请务必将默认语言设置更改为CSV,否则将无法按预期输出。此工具允许任何其他字符作为分隔字符,而不是强制使用逗号。
答案 1 :(得分:-1)
假设您的csv文件如下所示:
# contents of ad.csv
user_id,field1,field2
useronlyad,value1,value2
userboth,value3,value4
和此:
# contents of oracle.csv
user_id,field1,field2
useronlyoracle,value1,value2
userboth,value3,value4
您可以获得不是这样的oracle用户的广告用户(从Josh Einstein借用New-HashSet):
# to return all ad users that are not oracle users
import-module .\Scripting.psm1
$ad_hashset = new-hashset string
$oracle_hashset = new-hashset string
import-csv .\ad.csv | ForEach-Object {$ad_hashset.add($_.user_id)}
import-csv .\oracle.csv | ForEach-Object {$oracle_hashset.add($_.user_id)}
$ad_hashset.ExceptWith($oracle_hashset)
$ad_hashset # will return useronlyad
同样,您可以获得非此类广告用户的oracle用户
# to return all ad users that are not oracle users
import-module .\Scripting.psm1
$ad_hashset = new-hashset string
$oracle_hashset = new-hashset string
import-csv .\ad.csv | ForEach-Object {$ad_hashset.add($_.user_id)}
import-csv .\oracle.csv | ForEach-Object {$oracle_hashset.add($_.user_id)}
$oracle_hashset.ExceptWith($ad_hashset)
$oracle_hashset # will return useronlyoracle
简要说明:如何运作: