删除文本文件中的重复数据组

时间:2013-05-31 18:31:01

标签: powershell duplicates

我的文本文件格式类似于以下内容:

Description1:        Data-123<br>
Description2:        Data-ABC<br>
Description3:        Data-789<br>
Description4:        Data-EFG<br>
Description5:        Data-XYZ<br>

Description1:        Data-123<br>
Description2:        Data-ABC<br>
Description3:        Data-789<br>
Description4:        Data-EFG<br>
Description5:        Data-XYZ<br>

Description1:        Data-123<br>
Description2:        Data-ABC<br>
Description3:        Data-789<br>
Description4:        Data-EFG<br>
Description5:        Data-584<br>

我需要PowerShell作为一个整体来比较每个组(5行数据)并删除任何重复的组,只留下唯一的数据组。我可以使用下面的代码删除单个重复行,但没有运气比较每个组。

get-content TextFile.txt | sort-object | get-unique > NewTextFile.txt

2 个答案:

答案 0 :(得分:0)

也许这可以工作,你需要根据最后一行代码的结果创建输出文件,无论如何我没有给出任何解释,因为你没有向我们展示你到目前为止的任何代码。

$a = gc mylist.txt

$b = [string]::Empty
$c = @()

$a | % {if ( $_ -ne [string]::Empty ) 
            { $b += "$_`n"  } 
        else 
            { $c += $b
              $b = [string]::Empty 
            }   
}    
$c += $b    
$c | select -Unique | out-file .\mynew.txt

答案 1 :(得分:0)

将文件内容拆分为两个新行字符(应该与空行之前的行末尾+后面的空行匹配),拆分返回的每个对象(删除空行)然后再加入,添加新行并将结果写入新文件。

(Get-Content TextFile.txt | Out-String) -split "`r`n`r`n" | ForEach-Object{
    ($_.Split("`r`n",[System.StringSplitOptions]::RemoveEmptyEntries) -join "`r`n") + "`n"
} | Select-Object -Unique | Out-File NewTextFile.txt