PowerShell对比两个CSV文件 高亮重复项或新增重复标识列咨询
CSV对比保留全量内容+重复标识实现方案
该需求完全可以实现,下面分别提供两种常用场景的实现方式:
方案1:新增独立标识列(纯CSV格式,保留原始所有内容)
CSV为纯文本格式本身不支持样式高亮,该方案适合后续仍需用程序处理CSV的场景,会在原始CSV所有列的基础上新增IsDuplicate列,重复项标注为True,非重复项标注为False,所有原始行内容完全保留。
实现代码
# 导入第二个CSV的比对字段列表 $compareEmails = (Import-Csv -Path "第二个文件路径.csv").Primaryemail # 导入第一个CSV,遍历所有行新增重复标识列 $fullCsvWithFlag = Import-Csv -Path "第一个原始文件路径.csv" | ForEach-Object { # 新增标识列,判断当前行的邮箱是否在比对列表中 $_ | Add-Member -MemberType NoteProperty -Name "IsDuplicate" -Value ($_.Associate_Email -in $compareEmails) -PassThru } # 导出全量内容(含原始所有列+新增标识列) $fullCsvWithFlag | Export-Csv -Path "输出全量文件路径.csv" -NoTypeInformation -Encoding UTF8
注意事项
- 替换代码中的文件路径为你实际的文件路径
- 新增的列名
IsDuplicate可根据需要自行修改 - 添加
-Encoding UTF8参数可避免中文乱码问题
方案2:重复项高亮(导出为Excel格式)
如果需要可视化的高亮效果,可以导出为带格式的Excel文件实现重复行高亮,需提前安装ImportExcel PowerShell模块,执行Install-Module ImportExcel -Scope CurrentUser即可完成安装。
实现代码
Import-Module ImportExcel $compareEmails = (Import-Csv -Path "第二个文件路径.csv").Primaryemail $fullCsv = Import-Csv -Path "第一个原始文件路径.csv" | ForEach-Object { $_ | Add-Member -MemberType NoteProperty -Name "IsDuplicate" -Value ($_.Associate_Email -in $compareEmails) -PassThru } # 定义高亮规则:IsDuplicate为True的行标黄 $duplicateRule = New-ConditionalText -Range A:Z -ConditionalType Equal -Value "True" -BackgroundColor Yellow # 导出为Excel,应用高亮规则 $fullCsv | Export-Excel -Path "高亮结果文件.xlsx" -ConditionalText $duplicateRule -Show
内容的提问来源于stack exchange,提问作者Aaron
相关产品推荐
相关产品推荐

