Batch zum Sortieren einer Datei mit dem Entfernen von Duplikatzeilen?

1501
Martin

Wenn ich eine Textdatei habe, kann ich sie per Befehl sortieren sort input.txt output.txt. Kann ich irgendwie auch doppelte Zeilen aus der Textdatei entfernen? (Im Idealfall möchte ich eine Lösung, die in einer Batchdatei unter Windows ausgeführt werden kann.)

Dies ist im Grunde dasselbe wie die Frage, wie Duplikate aus einer Textdatei entfernt werden sollen. (Da kann ich natürlich zuerst sortieren und dann einen Stapel zum Entfernen von Duplikaten verwenden.) Der Grund für die Sortierung ist, dass ich davon ausgehe, dass es einfacher ist, Duplikate zu entfernen, wenn wir wissen, dass die Datei sortiert ist und sie nur in aufeinanderfolgenden Zeilen erscheinen können . Ich denke, es ist wahrscheinlicher, dass es eine Möglichkeit gibt, Duplikate zusammen mit dem Sortieren zu entfernen. (Und für die Zwecke, bei denen ich diese ID verwenden möchte, ist es unerheblich, ob die Reihenfolge der Zeilen in der Datei geändert wird, solange die wiederholten Zeilen entfernt werden.)

Zum Beispiel aus der Datei, die so aussieht:

100 100 100 100 101 101 102 

Ich hätte gern

100 101 102 
1
Dies ist meine erste Frage zu SU. Ich habe mein Bestes gegeben, um zu prüfen, ob dies bereits auf der Website beantwortet wurde, und auch, um korrekte Tags auszuwählen. Wenn erfahrene Benutzer der Website geeignetere Tags vorschlagen und auf bereits vorhandene Beiträge verweisen können, die ich vermisst habe, wäre ich natürlich dankbar. Martin vor 7 Jahren 0
Müssen Sie dies speziell in nativen Windows-Tools beibehalten? Gibt es keine Chance, eine der leistungsfähigeren Skriptumgebungen wie Python oder NodeJS zu verwenden? Leider ist die Windows-Befehlszeile (und damit auch Batchdateien) bei der dynamischen Verarbeitung von Daten nicht sehr effizient. Es ist nicht unmöglich, nur sehr knifflig. ZaLiTHkA vor 7 Jahren 0
@ZaLiTHkA Wenn es keine Lösung gibt, die Batch-Dateien verwendet oder wenn es sehr schwierig ist, werde ich andere Möglichkeiten in Betracht ziehen. (Wenn ich mich nicht irre, kann unix sort dies tun. Wahrscheinlich hilft mir cygwin oder gnuwin32 wahrscheinlich.) Natürlich verstehe ich, dass jemand, der an die von Ihnen erwähnten Werkzeuge gewöhnt ist, die natürlichste Lösung für einen solchen Benutzer sein könnte . Als erste Möglichkeit habe ich jedoch gefragt, ob dies mit Batch-Dateien möglich ist. Martin vor 7 Jahren 0
Es ist definitiv möglich, ich habe mich nur gefragt, ob es eine spezifische Anforderung dafür gibt. :) Die Lösung von Walmart geht damit wirklich gut und weitaus effizienter um, als ich es mit meinem ** Wissen über Windows-CLI-Tools hätte tun können. ZaLiTHkA vor 7 Jahren 0
Bitte beachten Sie, dass https://superuser.com kein kostenloser Skript- / Code-Schreibservice ist. Wenn Sie uns sagen, was Sie bisher versucht haben (einschließlich der Skripts / des Codes, die Sie bereits verwenden) und wo Sie stecken bleiben, können wir versuchen, bei bestimmten Problemen zu helfen. Sie sollten auch lesen [Wie kann ich eine gute Frage stellen?] (Https://superuser.com/help/how-to-ask). DavidPostill vor 7 Jahren 0

1 Antwort auf die Frage

3
Pimp Juice IT

Batch zum Sortieren einer Datei mit dem Entfernen von Duplikatzeilen?

Nachstehend finden Sie eine native Batch-Skript-Windows-Lösung, nach der Sie diese Aufgabe ausgeführt haben. Stellen Sie einfach Ihre Eingabe- und Ausgabedatei-Variablen entsprechend ein.

Bonus Hinweis: Wenn Sie das so ändern SET InputFile=%~1, können Sie die Datei auf das gespeicherte Batch-Skript ziehen und die Aufgabe wird mit der einfachen Drag & Drop-Methode ausgeführt.

Batch-Skript

@ECHO ON  SET InputFile=C:\folder\path\Input.txt ::SET InputFile=%~1 SET OutputFile=C:\folder\path\Output.txt  SET PSScript=%Temp%\~tmpRemoveDupe.ps1 IF EXIST "%PSScript%" DEL /Q /F "%PSScript%" ECHO Get-Content "%InputFile%" ^| Sort-Object ^| Get-Unique ^> "%OutputFile%">>"%PSScript%"  SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0 CD /D "%PowerShellDir%" Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%'"  GOTO EOF 

Weitere Ressourcen