我想比較兩個csv檔案test1和test2。我想只在部門或國家發生變化的情況下輸出一個test3檔案,并附上變化的細節。我有以下代碼,但這是對整個檔案的比較,而不僅僅是國家和部門:
Compare-Object -ReferenceObject (Get-Content -Path C:scripts est1. csv) -DifferenceObject (Get-Content -Path C:scripts est2.csv) -PassThru | Where-Object{ $_.SideIndicator -eq "=> " } | % { $_ -Replace ',', "; " } | Out-File -FilePath C:scripts est3.csv
所以測驗3應該和測驗2一樣。有誰知道如何只用國家或部門的變化來比較這兩個檔案呢
uj5u.com熱心網友回復:
不使用Compare-Object,你可以像下面這樣做:
$csv1 = Import-Csv -Path 'C:scripts est1.csv'
$csv2 = Import-Csv -Path 'C:scripts est2.csv'/span>
$csv3 = foreach ($item in $csv2) {
$compare = $csv1 | WHERE-Object { $_.email -eq $item.email }
if ($compare.Country -ne $item.Country -or $compare.Department -ne $item.Department) {
# 輸出$csv2的物件,收集到新的$csv3中。
$item
}
}
$csv3 | Export-Csv -Path 'C:scripts est3.csv' -Delimiter ' ;' -NoTypeInformation
如果你確實想使用Compare-Object,這也可以:
$csv1 = Import-Csv -Path 'C:scripts est1.csv'
$csv2 = Import-Csv -Path 'C:scripts est2.csv'
Compare-Object -ReferenceObject $csv1 -DifferenceObject $csv2 -Property Country,Department -PassThru|
Where-Object{ $_.SideIndicator -eq "=>"/span> } | Select-Object * -ExcludeProperty SideIndicator !
Export-Csv -Path 'C:scripts est3.csv' -Delimiter ';' -NoTypeInformation
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/310239.html
標籤:
上一篇:Pandas:如何洗掉單列不同值的重復,同時保留所述的不同值?
下一篇:大的csv檔案。MemoryError。無法為形狀為(7,62388743)、資料型別為object的陣列分配3.25GiB。


