2017-02-23 15 views
1

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

Import-CsvExport-Csvを使用すると、csvファイルとヘッダーを処理するように構築されているため、このプロセスがずっと簡単になります。

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

秒でそれに私をベット、 @ジェームスC! ;) – TechSpud

+0

James Cありがとう、それは素晴らしいです!私は今日何かを学んだだけで、その解決策は完璧です。 –

+0

あなたは答えとしてこれを受け入れるべきです。 –

0

テストされていないが、これを試してみてください...

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

あなたは元のヘッダーの列をスキップすることを選択-skip 1を使用することができます。

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 
+0

import-csvなしで行う特別な理由がある場合は、これを代替回答として追加します。ヘッダー名を番号のついた列に具体的に変換する場合。 –

関連する問題