从 CSV 中删除重复项但保留列 headers
Removing duplicates from CSV yet keeping column headers
我有一个有效的 powershell 脚本,它删除了 csv 文件中的重复项,但它对数据中的列 headers 进行了排序,这是我不想要的,并且无法找到保留该列的方法headers。
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 完成这个?
使用 Import-Csv
和 Export-Csv
使这个过程更容易,因为它们是为处理 csv 文件和 headers.
而构建的
Import-Csv "C:\testdata.csv" | Sort-Object * -Unique | Export-Csv "c:\output.csv" -NoTypeInformation
未经测试,但试试这个...
Import-Csv -Path 'C:\path\to\File.csv' |
Select * -Unique |
Export-Csv 'C:\path\to\NewFile.csv' -NoTypeInformation
您可以使用 Select -Skip 1 跳过原来的 header 列:
Get-Content testdata.csv | Select -Skip 1 | ConvertFrom-Csv -Header "Column1","Column2","Column3","Column4" | sort -Unique -Property Column1 | % {"{0},{1},{2},{3}" -f $_.Column1, $_.Column2, $_.Column3, $_.Column4} | set-content output.csv
我有一个有效的 powershell 脚本,它删除了 csv 文件中的重复项,但它对数据中的列 headers 进行了排序,这是我不想要的,并且无法找到保留该列的方法headers。
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 完成这个?
使用 Import-Csv
和 Export-Csv
使这个过程更容易,因为它们是为处理 csv 文件和 headers.
Import-Csv "C:\testdata.csv" | Sort-Object * -Unique | Export-Csv "c:\output.csv" -NoTypeInformation
未经测试,但试试这个...
Import-Csv -Path 'C:\path\to\File.csv' |
Select * -Unique |
Export-Csv 'C:\path\to\NewFile.csv' -NoTypeInformation
您可以使用 Select -Skip 1 跳过原来的 header 列:
Get-Content testdata.csv | Select -Skip 1 | ConvertFrom-Csv -Header "Column1","Column2","Column3","Column4" | sort -Unique -Property Column1 | % {"{0},{1},{2},{3}" -f $_.Column1, $_.Column2, $_.Column3, $_.Column4} | set-content output.csv