Powershell: Textdatei bei denen zwei Spalten gleich und eine dritte unterschiedlich ist entfernen
Hallo alle zusammen,
ich habe eine Textdatei auto.txt in der es drei Spalten(getrennt durch Semikolon gibt)
Header:
Name; Version; Datum
Es gibt in der Datei viele gleiche Zeilen die ich durch -unique entfernt habe. Es gibt aber Zeilen bei denen -unique auch nicht hilft weil es das Feld Datum mal leer und mal befüllt gibt:
Fiat; 500; 21.11.2018
Fiat; 500;
Audi; RS4; 26.06.2018
Audi; RS4;
In diesem Fall sollen nur die Zeilen übernommen werden bei denen auch ein Datum hinterlegt ist.
Ich habe das mit 3 Array gelöst aber da habe ich das Problem dass mir die einzelnen Spalten dann untereinander als Ergebnis gespeichert werden.
Jetzt dachte ich dass ich hier mal nachfrage weil das wahrscheinlich viel leichter zu bewerkstelligen ist als ich das versucht habe (Array)
Wäre für einen Denkanstoß dankbar.
Gruß
Ralf
ich habe eine Textdatei auto.txt in der es drei Spalten(getrennt durch Semikolon gibt)
Header:
Name; Version; Datum
Es gibt in der Datei viele gleiche Zeilen die ich durch -unique entfernt habe. Es gibt aber Zeilen bei denen -unique auch nicht hilft weil es das Feld Datum mal leer und mal befüllt gibt:
Fiat; 500; 21.11.2018
Fiat; 500;
Audi; RS4; 26.06.2018
Audi; RS4;
In diesem Fall sollen nur die Zeilen übernommen werden bei denen auch ein Datum hinterlegt ist.
Ich habe das mit 3 Array gelöst aber da habe ich das Problem dass mir die einzelnen Spalten dann untereinander als Ergebnis gespeichert werden.
Jetzt dachte ich dass ich hier mal nachfrage weil das wahrscheinlich viel leichter zu bewerkstelligen ist als ich das versucht habe (Array)
Wäre für einen Denkanstoß dankbar.
Gruß
Ralf
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 527338
Url: https://administrator.de/contentid/527338
Ausgedruckt am: 23.11.2024 um 05:11 Uhr
4 Kommentare
Neuester Kommentar
Import-CSV 'd:\auto.txt' -delimiter ';' | sort {get-date $_.Datum} -Desc | group Name,Version | %{$_.Group} | export-csv 'd:\auto_neu.txt' -Delimiter ';' -NoTypeInformation -Encoding UTF8
Das ist eine Foreach-Schleife die für jede Gruppe das erste Objekt (mit allen Spalten) der Gruppe nimmt. Da die Einträge absteigend sortiert sind nimmt er den Eintrag mit dem aktuellsten Datum. Sollten also mehrere Einträge mit unterschiedlichen Datumwerten existieren nimmt er den mit dem aktuellsten Datum. Falls das bei dir nicht der Fall sein sollte kannst du natürlich auch zu Eriks Variante greifen, es war mir nur nicht klar was bei dir der Fall sein könnte, deswegen diese erweiterte Variante.
Gruß s.
Der Rest ist alles klar. Nimmt immer das erte Element der gruppierten Zeilen. Und da das Datum absteigend sortiert ist, steht das Feld mit Datum an erster Stelle. In die neue Datei werden nur die ersten Zeilen der gruppierten Zeilen übertragen?
KorrektDanke noch einmal.
Bitte, und frohes Fest.Gruß s.