Удалить дублирующую строку с помощью PowerShell - PullRequest
6 голосов
/ 30 сентября 2011

У меня есть текстовый файл:

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 ]

7 голосов
/ 13 февраля 2014

Все это кажется действительно сложным.Это так же просто, как:

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

Использование реальных имен файлов вместо переменных:

gc test.txt| sort | get-unique > unique.txt
4 голосов
/ 30 сентября 2011

Чтобы получить уникальные строки:

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
1 голос
/ 30 сентября 2011

Если заказ не важен:

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
0 голосов
/ 27 марта 2017
$file = "C:\temp\filename.txt"
(gc $file | Group-Object | %{$_.group | select -First 1}) | Set-Content $file

Исходный файл теперь содержит только уникальные строки

Уже опубликованные опции у меня почему-то не работают

0 голосов
/ 30 сентября 2011

Попробуйте что-то вроде этого:

$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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...