我有兩個的CSV文件,我想比較這兩個文件,並找到difference.It包含USER_ID如何比較兩個CSV文件,並使用PowerShell
我比較對象,DIFF嘗試,但未能實現找到差異。
像
AD_Users.csv
Oracle_Users.csv
既包含用戶ID,輸出應該是這樣
AD用戶沒有在甲骨文
Oracle用戶確實存在不存在於AD
例如 - K9988484 J8485888
我試着與比較對象,差異但無法實現。
我有兩個的CSV文件,我想比較這兩個文件,並找到difference.It包含USER_ID如何比較兩個CSV文件,並使用PowerShell
我比較對象,DIFF嘗試,但未能實現找到差異。
像
AD_Users.csv
Oracle_Users.csv
既包含用戶ID,輸出應該是這樣
AD用戶沒有在甲骨文
Oracle用戶確實存在不存在於AD
例如 - K9988484 J8485888
我試着與比較對象,差異但無法實現。
假設您的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用戶這樣的廣告的用戶(借新-HashSet from Josh Einstein):
# 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
同樣,你可以得到不屬於廣告的用戶喜歡的是如何工作的這
# 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
簡要說明 oracle的用戶:
嗨,喬恩,我不知道它爲什麼downvote,我試過上面的腳本,但問題是我沒有在兩個文件中獲得任何輸出。 – Naveen 2012-01-11 08:42:12
@Naveenk我已經修改了這些示例以使用字段名user_id處理csv文件(如您在問題中所述) – 2012-01-12 15:21:33
漂亮的差異將不同CSV文件在輸出更容易閱讀的格式,但它不適用於CLI。請務必將默認語言設置更改爲CSV,否則將不會像您期望的那樣輸出。該工具允許任何其他角色成爲分隔角色,而不是強制使用逗號。
我不想使用任何工具,只有PowerShell,因爲我必須修改一些現有的腳本 – Naveen 2012-01-11 08:43:40
您能否發佈您的CSV文件的示例,包括標題和一些數據嗎? – 2012-01-09 16:22:47
此外,您嘗試使用Compare-Object的命令... – 2012-01-09 16:30:53
爲什麼必須使用Powershell?爲什麼像Beyond Compare這樣的專用文件比較器不可接受? – 2012-01-09 17:29:14