Powershell根据CSV

时间:2015-08-05 21:35:48

标签: powershell

对此非常新,所以任何帮助都将不胜感激。我有一个CSV文件,我需要查找并删除特定列中具有重复ID的列。见下文:

CSV的当前状态

Fish1,123456,123456 
Fish2,234567,234567 
Fish1,999999,999999
Fish2,234567,234567

CS的需要状态

Fish1,123456,123456
Fish2,234567,234567

基本上,无论第2列和第3列中的数据如何,我都需要删除第1列中所有重复的记录。任何帮助都将非常感谢。谢谢。

2 个答案:

答案 0 :(得分:6)

使用Sort-Object CmdLet确保没有重复项。

Get-Content .\csvfile1.csv | 
    ConvertFrom-Csv -Header "Column1", "Column2", "Column3" | 
    Sort -Unique -Property Column1 | 
    % {"{0},{1},{2}" -f $_.Column1, $_.Column2, $_.Column3} | 
    Set-Content csvfile2.csv

答案 1 :(得分:1)

您需要使用哈希表来跟踪您已经看过的行:

$seen = @{ }
Get-Content -Raw -Path my.csv |
    ConvertFrom-Csv -Header 'Column1','Column2','Column3' |
    Where-Object { -not $seen.ContainsKey( $_.Column1 ) ; $seen[$_.Column1] = $true; }