我有文本文件:
1 2 4 5 6 7
1 3 5 6 7 8
1 2 3 4 5 6
1 2 4 5 6 7
这里的第一行和最后一行是相似的。我有很多双线文件。我需要删除所有副本。
答案 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
源文件现在只包含唯一的行
由于某些原因,已发布的选项对我不起作用