从CSV中删除重复项但保留列标题

时间:2017-02-23 14:00:29

标签: sorting powershell export-to-csv

我有一个有效的PowerShell脚本可以删除csv文件中的重复项,但它会对数据中的列标题进行排序,这是我不想要的,也无法找到保留列标题的方法。

Get-Content C:\testdata.csv | ConvertFrom-Csv -Header "Column1", "Column2", "Column3", "Column4" | sort -Unique -Property Column1 | % {"{0},{1},{2},{3}" -f $_.Column1, $_.Column2, $_.Column3, $_.Column4} | set-content c:\output.csv

测试数据csv如下:

Name,IDNumber,OtherNumber,UniqueCode
Tom,10,133,abcd
Tom,10,133,abcd
Bill,4,132,efgh
Bill,4,132,efgh
Bill,4,132,efgh
Lefty,3,122,ijkl
Lefty,3,122,ijkl
Lefty,3,122,ijkl
Lefty,3,122,ijkl

有没有办法用Powershell来实现这个目标?

3 个答案:

答案 0 :(得分:3)

使用Import-CsvExport-Csv可以更轻松地完成此过程,因为它们是为处理csv文件和标头而构建的。

Import-Csv "C:\testdata.csv" | Sort-Object * -Unique | Export-Csv "c:\output.csv" -NoTypeInformation

答案 1 :(得分:0)

未经测试,但试试这个......

Import-Csv -Path 'C:\path\to\File.csv' |
  Select * -Unique |
  Export-Csv 'C:\path\to\NewFile.csv' -NoTypeInformation

答案 2 :(得分:0)

您可以使用Select -Skip 1跳过原始标题列:

{{1}}