rippchen

Doppelte Eintrage in einer CSV Datei mit PowerShell löschen (Kriterium Aktualität) . Filter

Hallo,

ich nutze folgenden Code für mein Problem:

$folder = 'C:\Users\ICH\Desktop\Import'  
$out = 'C:\Users\ICH\Export\Gesamt.csv'  
gci $folder -Filter *.csv -recurse | %{
    $raw = ((gc $_.FullName) | select -Skip 1) 
    $csv = $raw[0..($raw.GetUpperBound(0)-1)]| ConvertFrom-CSV -Delimiter ";" -Header "1","2","Timestamp","4","Modifikation Timestamp","6","7"   
    $csv | Sort-Object -Property "Timestamp", "Modifikation Timestamp" -descending |export-csv $out -Append -Delimiter ";" -Notype -Encoding UTF8   
}


Der Code öffnet alle CSV-Dateien in einem Ordner inkl. der Unterordner und löscht jeweils die erste und letzte Zeile.

Zudem werden die Inhalte absteigend nach der dritten Spalte "TImestamp" und der 5 Spalte "Modifikation Timestamp sortiert".

Es kann sein, dass die Messwerte öfter als einmal auftreten = Gleicher "Timestamp" und unterschiedlich aktuell sind, unterschiedlicher "Modifikation Timestamp".

Ich möchte nun in die neu erzeugte CSV- Datei nur die aktuellsten Werte übernehmen, falls in der Spalte "Timestamp" doppelte Werte vorhanden sind.

Eine Beispiel CSV Datei liegt bei:

http://workupload.com/file/ZFSbTG2

Vielen Dank.
Rippchen
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 305683

Url: https://administrator.de/forum/doppelte-eintrage-in-einer-csv-datei-mit-powershell-loeschen-kriterium-aktualitaet-filter-305683.html

Ausgedruckt am: 05.06.2025 um 04:06 Uhr

colinardo
Lösung colinardo 29.05.2016 aktualisiert um 16:44:55 Uhr
Goto Top
Hallo Rippchen,
bei solchen Aufgaben hilf einem sehr gut das CMDLet group-object (Alias: group). Ersetze in deinem Skript oben Zeile 6 durch das hier:
$csv | group {get-date $_.Timestamp} | %{
    $_.Group | sort {get-date $_.'Modifikation Timestamp'} -Descending | select -First 1  
} | Sort "Timestamp", "Modifikation Timestamp" -descending | export-csv $out -Append -Delimiter ";" -Notype -Encoding UTF8    
Das macht folgendes:
Es werden die die Zeilen mit gleichen "Timestamps" Gruppiert, dann wird für jede dieser Gruppen innerhalb dieser Gruppe nach der Spalte "Modifikation Timestamp" (Denglisch face-smile) Absteigend sortiert und nur der erste Eintrag der Gruppe übernommen.

Grüße Uwe
Rippchen
Rippchen 29.05.2016 um 17:06:36 Uhr
Goto Top
Vielen Vielen Dank,

es funktioniert face-smile

Ich wünsche noch ein schönes Restwochenende .


Grüße
Rippchen
colinardo
colinardo 29.05.2016 aktualisiert um 17:07:34 Uhr
Goto Top
Zitat von @Rippchen:
Vielen Vielen Dank,
Keine Ursache.
Ich wünsche noch ein schönes Restwochenende .
Wünsche dir ebenso face-smile

Grüße Uwe
Rippchen
Rippchen 30.05.2016 um 09:21:49 Uhr
Goto Top
Gibt es eine Möglichkeit die Verwendung des Arbeitsspeichers zu limitieren ?

Ich benötige nämlich teilweise 38 GB Arbeitsspeicher (inkl. virtuellem Speicher) und mein Prozessor ist dabei nur zu 37 Prozent ausgelastet.

VG

Rippchen
colinardo
colinardo 30.05.2016 aktualisiert um 10:23:12 Uhr
Goto Top
Ja, aber, das hat ja nun rein gar nichts mehr mit der obigen Fragestellung zu tun, also mache dazu einen neuen Thread auf. Merci.
Und dann aber bitte auch mit allen hier dazu benötigten Infos wie OS etc.
Rippchen
Rippchen 30.05.2016 um 11:22:37 Uhr
Goto Top
Verzeihung du hast natürlich recht.

Die neue Frage wurde soeben erstellt.