Есть ли в Windows эквивалент Unix Uniq?

4976
Yu Jiaao

Мне нужно удалить дубликаты строк из текстового файла, это просто в Linux, используя

cat file.txt |sort | uniq 

когда file.txt содержит

aaa bbb aaa ccc 

Будет выводить

aaa bbb ccc 

Есть ли аналог Windows? или как это сделать в Windows?

10
В Unix вы можете написать это как `sort -u file.txt` jfs 6 лет назад 6
Существует также WSL, который работает довольно хорошо, насколько этот материал идет user2813274 6 лет назад 1
Может быть, вы хотите установить что-то в качестве решения, если у вас больше нет вопросов? davidbaumann 6 лет назад 0

2 ответа на вопрос

18
Yu Jiaao

Sort-ObjectКомандлет в PowerShell поддерживает -Uniqueпереключатель, который делает то же самое, как uniq:

Get-Content file.txt | Sort-Object -unique 

Конечно, благодаря наличию псевдонимов в PowerShell вы также можете написать:

type file.txt | sort -unique 

Кроме того, /uniqueв sort.exeWindows 10 есть недокументированный переключатель, поэтому он должен работать в командной строке:

type file.txt | sort /unique 
Я не думаю, что команда Windows (`sort.exe`) поддерживает это; это похоже на особенность встроенной оболочки PowerShell. Ben Voigt 6 лет назад 1
введите unsorted.txt | sort -unique> sorted.txt Это действительно работает под win10 и записывает уникальные значения в новый файл Lixas 6 лет назад 0
@BenVoigt на удивление, `тип file.txt | sort / unique` работает с _undocumented_ switch `/ unique` утилиты` sort.exe` (по крайней мере, в Windows 10). С другой стороны, вы правы, предоставив пример PowerShell `Get-Content file.txt | Sort-Object-unique`, по сути. JosefZ 6 лет назад 5
@Lixas `тип unsorted.txt | sort -unique` возвращает `-uniqueСистема не может найти указанный файл` с уровнем ошибки` 1`, если запускается из открытого приглашения `cmd` под Windows 10! JosefZ 6 лет назад 0
Ошибки `sort / unique` с` Invalid switch` в Windows 7 Enterprise. Don Cruickshank 6 лет назад 1
5
Journeyman Geek

Есть порты uniq, которые работают идентично версиям gnu / coreutils. Я лично использую вариант от GOW, но git для Windows имеет значительно более новую версию . Cygwin не требуется, хотя для последнего вам нужно искать в / usr / bin

Поскольку эти пакеты также содержат cat, sort и uniq - ваш рабочий процесс должен быть в основном одинаковым и cat file.txt |sort | uniqработать в основном одинаково