Ich muss doppelte Zeilen aus einer Textdatei entfernen, es ist unter 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?
sort -u file.txt
Antworten:
Das
Sort-Object
Cmdlet in PowerShell unterstützt einen-Unique
Switch, der Folgendes tutuniq
:Aufgrund des Vorhandenseins von Aliasnamen in PowerShell können Sie natürlich auch Folgendes schreiben:
Darüber hinaus gibt es
/unique
insort.exe
Windows 10 einen undokumentierten Schalter , sodass dies in der Eingabeaufforderung funktionieren sollte:quelle
sort.exe
) dies unterstützt. Es sieht aus wie eine Funktion der integrierten PowerShell.type file.txt | sort /unique
arbeitet mit undokumentierten Schalter/unique
vonsort.exe
Dienstprogramm (zumindest unter Windows 10). Auf der anderen Seite haben Sie Recht, dass das angegebene BeispielGet-Content file.txt | Sort-Object -unique
tatsächlich PowerShell ist.sort /unique
Fehler unterInvalid switch.
Windows 7 Enterprise.Es gibt Uniq-Ports, die identisch mit den Versionen gnu / coreutils funktionieren. Ich persönlich verwende 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 größtenteils identisch sein und
cat file.txt |sort | uniq
größtenteils identisch funktionierenquelle
Sie können den Befehl "uniq" ganz einfach selbst schreiben. Speichern Sie dies in einer Batch-Datei "uniq.cmd" irgendwo in Ihrem% Pfad, wo% es finden kann (z. B. in% windir% \ system32). Diese Version unterscheidet NICHT zwischen Groß- und Kleinschreibung:
Dies funktioniert sowohl mit "uniq mytextfile" als auch mit "cat mytextfile | uniq". Alle Eingaben und Argumente werden einfach an den Befehl sort übergeben.
Ab Windows 7 möchten Sie möglicherweise eine Version, bei der die Groß- und Kleinschreibung beachtet wird (der Unterschied besteht darin, dass der Schalter "sort / C" und nicht "if / i" nicht dokumentiert ist):
quelle
/?
,ON
,one ^ caret
oderbang!
. Aber das kann unter Verwendung der gelöst werden Makeln verzögert Expansionstechnik undecho(
sehen: Dostips: ECHO. FEHLT, Text oder Leerzeile zu gebenErgänzung zu Yu Jiaaos Antwort. Sie können das
sort-object
Powershell-Cmdlet an einer Eingabeaufforderung wie folgt aufrufen:quelle