Gibt es ein Windows-Äquivalent zum Unix-Unix?

4888
Yu Jiaao

Ich muss doppelte Zeilen aus einer Textdatei entfernen, dies ist in Linux einfach zu verwenden

cat file.txt |sort | uniq 

wenn file.txt enthält

aaa bbb aaa ccc 

Es wird ausgegeben

aaa bbb ccc 

Gibt es ein Windows-Äquivalent? oder wie geht das auf Windows?

10
Unter Unix könnten Sie es als `sort -u file.txt` schreiben jfs vor 6 Jahren 6
Es gibt auch eine WSL, die ziemlich gut funktioniert, soweit es so geht user2813274 vor 6 Jahren 1
Vielleicht möchten Sie etwas als Lösung festlegen, wenn Sie keine weiteren Fragen haben? davidbaumann vor 5 Jahren 0

2 Antworten auf die Frage

18
Yu Jiaao

Das Sort-ObjectCmdlet in PowerShell unterstützt einen -UniqueSwitch, der dasselbe tut wie uniq:

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

Da in PowerShell Aliasnamen vorhanden sind, können Sie natürlich auch Folgendes schreiben:

type file.txt | sort -unique 

Darüber hinaus gibt es /uniquein sort.exeWindows 10 einen undokumentierten Schalter. Daher sollte dies in der Eingabeaufforderung funktionieren:

type file.txt | sort /unique 
Ich glaube nicht, dass der Windows-Befehl (`sort.exe`) dies unterstützt. Es sieht aus wie eine Funktion der integrierten PowerShell. Ben Voigt vor 6 Jahren 1
Geben Sie unsorted.txt | ein sort -unique> sortiert.txt Dies funktioniert wirklich unter win10 und schreibt eindeutige Werte in die neue Datei Lixas vor 6 Jahren 0
@BenVoigt überraschenderweise `` file.txt | sort / unique` funktioniert mit dem _undocumented_ switch `/ unique` des` sort.exe`-Dienstprogramms (zumindest unter Windows 10). Auf der anderen Seite haben Sie Recht, das angegebene Beispiel ist PowerShell `Get-Content file.txt | Sort-Object-unique` in der Tat. JosefZ vor 6 Jahren 5
@Lixas `geben Sie unsorted.txt | ein sort -unique` gibt `-unique zurück. Das System kann die angegebene Datei mit dem Errorlevel` 1` nicht finden, wenn sie von einer offenen `cmd`-Eingabeaufforderung unter Windows 10 ausgeführt wird! JosefZ vor 6 Jahren 0
`sort / unique`-Fehler mit` Invalid switch.` unter Windows 7 Enterprise. Don Cruickshank vor 6 Jahren 1
5
Journeyman Geek

Es gibt Ports von uniq, die identisch zu den gnu / coreutils-Versionen funktionieren. Ich persönlich benutze die Variante von GOW, aber git für Windows hat eine wesentlich neuere Version . Kein Cygwin erforderlich, für letzteres müssen Sie jedoch in / usr / bin suchen

Da diese Pakete auch cat, sort und uniq enthalten, sollte Ihr Workflow weitgehend identisch sein und cat file.txt |sort | uniqweitgehend identisch funktionieren