tastuser
Goto Top

Powershell - Doppelte Einträge einer Textdatei entfernen, BEIDE Einträge

Hallo
Ich habe eine Textdatei wo z.B. folgendes steht:

Mensch
Vogel
Mensch
Fisch
Tier

Jetzt möchte ich, dass der Eintrag Mensch entfernt wird, weil dieser doppelt ist. Und zwar komplett, sodass nur noch

Vogel
Fisch
Tier

steht und der Eintrag Mensch komplett weg ist.

Bitte so einfach wie möglich mit Powershell face-smile

Content-ID: 283585

Url: https://administrator.de/contentid/283585

Ausgedruckt am: 22.11.2024 um 16:11 Uhr

114757
Lösung 114757 22.09.2015 aktualisiert um 16:49:47 Uhr
Goto Top
Moin,
machst du so
$file = 'C:\data.txt'  
# Datei einlesen
$content = gc $file
# Vergleich zwischen Original und ausgefilterten Dubletten erstellen
$exclude = compare $content ($content | select -Unique) -passthru
# doppelte Einträge komplett ausfiltern und wieder in Original-Datei zurückschreiben (Achtung min. PS 3.0 benötigt)
$content | ?{$_ -notin $exclude} | out-file $file

Gruß jodel32
Tastuser
Tastuser 22.09.2015 um 16:28:51 Uhr
Goto Top
Danke!

Jedoch funktioniert es nicht wenn Lerrzeilen vorhanden sind face-confused
114757
114757 22.09.2015 aktualisiert um 16:41:58 Uhr
Goto Top
Jedoch funktioniert es nicht wenn Lerrzeilen vorhanden sind
Geht hier auch damit einwandfrei ... Da musst du schon näher erläutern was dir vorschwebt oder du meinst ...
Denn "funktioniert nicht" ist keine Fehlermeldung in einem Admin-Forum, das sollte dir klar sein...
Tastuser
Tastuser 22.09.2015 um 16:49:28 Uhr
Goto Top
Ja tut mir leid!

Also Wenn hinter "Mensch" ein Lerzeichen ist wie hier: "Mensch "
Dann wird dieser Eintrag als unterschiedlich erkannt und nicht gelöscht.
114757
Lösung 114757 22.09.2015 aktualisiert um 17:03:30 Uhr
Goto Top
Zitat von @Tastuser:

Ja tut mir leid!

Also Wenn hinter "Mensch" ein Lerzeichen ist wie hier: "Mensch "
Dann wird dieser Eintrag als unterschiedlich erkannt und nicht gelöscht.
Ach so das muss man natürlich wissen damit man es berücksichtigen kann, ist aber kein Problem, einfach Zeile 3 so modifizieren:
$content = (gc $file) | %{$_.Trim()}