使用PowerShell删除重复的字符串

时间:2011-09-30 11:46:13

标签: powershell

我有文本文件:

1 2 4 5 6 7
1 3 5 6 7 8
1 2 3 4 5 6
1 2 4 5 6 7

这里的第一行和最后一行是相似的。我有很多双线文件。我需要删除所有副本。

5 个答案:

答案 0 :(得分:7)

所有这些看起来都很复杂。它很简单:

gc $filename | sort | get-unique > $output

使用实际文件名而不是变量:

gc test.txt| sort | get-unique > unique.txt

答案 1 :(得分:4)

获得独特的界限:

PS > Get-Content test.txt | Select-Object -Unique
1 2 4 5 6 7
1 3 5 6 7 8
1 2 3 4 5 6

删除重复的

PS >  Get-Content test.txt | group -noelement | `
      where {$_.count -eq 1} | select -expand name

1 3 5 6 7 8
1 2 3 4 5 6

答案 2 :(得分:1)

如果订单不重要:

Get-Content test.txt | Sort-Object -Unique | Set-Content test-1.txt

如果订单很重要:

$set = @{}
Get-Content test.txt | %{
    if (!$set.Contains($_)) {
        $set.Add($_, $null)
        $_
    }
} | Set-Content test-2.txt

答案 3 :(得分:0)

尝试这样的事情:

$a = @{} # declare an arraylist type
gc .\mytextfile.txt | % { if (!$a.Contains($_)) { $a.add($_)}} | out-null

$a #now contains no duplicate lines

将$ a的内容设置为mytextfile.txt:

$a | out-file .\mytextfile.txt

答案 4 :(得分:0)

$file = "C:\temp\filename.txt"
(gc $file | Group-Object | %{$_.group | select -First 1}) | Set-Content $file

源文件现在只包含唯一的行

由于某些原因,已发布的选项对我不起作用