根据现有列删除重复项
remove duplicates based on existing column
我有以下 CSV 文件:
"Path","destination","isCopied"
"E:\DCMCache\file1","V:\dcmcache"
"E:\DCMCache\file2","V:\dcmcache","1"
"E:\DCMCache\file1","V:\dcmcache","1"
"E:\DCMCache\file3","V:\dcmcache","1"
"E:\DCMCache\file4","V:\dcmcache","1"
我需要删除重复项,但前提是 isCopied
为空。
我试过使用:
Import-CSV $InputFile | Group-Object Path | foreach-object { $_.group | sort-object Path | select -last 1 } |Export-Csv $InputFile-completed.csv -NoTypeInformation -Append
但它只有在我要删除的骗局列在第一位时才有效。想知道我错过了什么(这里是新手程序员):)
谢谢!
到目前为止我们已经完成了。
Import-Csv $InputFile | Group-Object Path | ForEach-Object{
If($_.Count -gt 1){
$_.Group | Where-Object{$_.isCopied}
} Else {
$_.Group
}
} | Export-Csv $InputFile-completed.csv -NoTypeInformation -Append
按照您的分组逻辑,然后检查每个 count
。如果计数大于 1,我们只允许具有 isCopied
值的条目。所以你应该能够轻松地将其输出到文件中。
如果此逻辑有问题,您可能需要包含具有更多条件的更好的源文件。就目前而言,这满足了基本要求。
如果您需要更具体地说明重复的 where
子句,您可以在其中进行更改。
如果有两个以上的副本,您可以随时添加到 where-object
Sort-Object isCopied -Desc | Select-Object -First 1
我有以下 CSV 文件:
"Path","destination","isCopied"
"E:\DCMCache\file1","V:\dcmcache"
"E:\DCMCache\file2","V:\dcmcache","1"
"E:\DCMCache\file1","V:\dcmcache","1"
"E:\DCMCache\file3","V:\dcmcache","1"
"E:\DCMCache\file4","V:\dcmcache","1"
我需要删除重复项,但前提是 isCopied
为空。
我试过使用:
Import-CSV $InputFile | Group-Object Path | foreach-object { $_.group | sort-object Path | select -last 1 } |Export-Csv $InputFile-completed.csv -NoTypeInformation -Append
但它只有在我要删除的骗局列在第一位时才有效。想知道我错过了什么(这里是新手程序员):)
谢谢!
到目前为止我们已经完成了。
Import-Csv $InputFile | Group-Object Path | ForEach-Object{
If($_.Count -gt 1){
$_.Group | Where-Object{$_.isCopied}
} Else {
$_.Group
}
} | Export-Csv $InputFile-completed.csv -NoTypeInformation -Append
按照您的分组逻辑,然后检查每个 count
。如果计数大于 1,我们只允许具有 isCopied
值的条目。所以你应该能够轻松地将其输出到文件中。
如果此逻辑有问题,您可能需要包含具有更多条件的更好的源文件。就目前而言,这满足了基本要求。
如果您需要更具体地说明重复的 where
子句,您可以在其中进行更改。
如果有两个以上的副本,您可以随时添加到 where-object
Sort-Object isCopied -Desc | Select-Object -First 1