experiment626
Goto Top

Zeilen einer CSV zusammenfassen und zusammengefasst speichern

29674/15;VI;NSDo;Mib1        ;06.07.2015 10:24;Autostainer 2;;;Fertig
29674/15;VII;NSDo;Mib1        ;06.07.2015 10:24;Autostainer 2;;;Fertig
29674/15;IX;NSDo;Mib1        ;06.07.2015 10:24;Autostainer 2;;;Fertig
29674/15;IX;NSDo;CK7        ;06.07.2015 10:24;Autostainer 2;;;Fertig
24543/15;I;NSS;ZK       ;08.07.2015 15:03;Autostainer 1;;;Fertig
24543/15;I;NSS;CK7        ;08.07.2015 15:03;Autostainer 1;;;Fertig
24543/15;I;NSS;Gata3       ;08.07.2015 15:04;Autostainer 1;;;Fertig
24543/15;I;NSS;CK5        ;08.07.2015 15:03;Autostainer 1;;;Fertig
24543/15;I;NSS;p63        ;08.07.2015 15:03;Autostainer 1;;;Fertig
24543/15;I;NSS;ER       ;08.07.2015 15:03;Autostainer 1;;;Fertig
24543/15;I;NSS;PR       ;08.07.2015 15:03;Autostainer 1;;;Fertig
24543/15;I;NSS;Mib1        ;08.07.2015 15:04;Autostainer 1;;;Fertig
24543/15;II;NSS;ZK       ;08.07.2015 15:04;Autostainer 1;;;Fertig
24543/15;II;NSS;CK7        ;08.07.2015 15:04;Autostainer 1;;;Fertig
24543/15;II;NSS;Gata3       ;08.07.2015 15:04;Autostainer 1;;;Fertig
24543/15;II;NSS;CK5        ;08.07.2015 15:04;Autostainer 1;;;Fertig
24543/15;II;NSS;p54        ;08.07.2015 15:04;Autostainer 1;;;Fertig

So würde die CSV aussehen.
Ich würde gerne zusammenfassen lassen, wobei die ersten drei Token zusammengehören,
das vierte Token ist der eigentliche Unterschied, der zusammengefasst werden soll. Alles soll entsprechend
der Nummer (1. Token) als Datei gespeichert werden. Das Datum wird gebraucht, Uhrzeit und Rest nicht.

So sollte der Inhalt aussehnen (generierter Dateiname 15-29674):
06.07.2015 NSDO VI - Mib1
06.07.2015 NSDO VII - Mib1
06.07.2015 NSDO IX - Mib1, CK7
So sollte der Inhalt aussehnen (generierter Dateiname 15-24543):
08.07.2015 NSS I ZK, CK7, Gata3, CK5, p63, ER, PR, Mib1
08.07.2015 NSS II ZK, CK7, Gata3, CK5, p54
Ich hab's versucht, anderes entsprechend umzuschreiben, aber vermutlich denkt man hier
viel zu kompliziert; es gibt eben welche, die sich besser damit auskennen und mit ganz anderer Idee herangehen.

Wäre nett, wenn ihr mir helfen könntet.

Gruß
Stitch

Content-ID: 289215

Url: https://administrator.de/forum/zeilen-einer-csv-zusammenfassen-und-zusammengefasst-speichern-289215.html

Ausgedruckt am: 15.04.2025 um 16:04 Uhr

122990
122990 24.11.2015 aktualisiert um 13:37:36 Uhr
Goto Top
Moin,
mit Powershell schnell gemacht ... (mit deinen geposteten Daten erfolgreich getestet, "geht nicht" gibts also nicht face-wink)
Eingabedatei und Ausgabeordner (Zeile 1 und 8) natürlich an deine Umgebung anpassen ...
$csv = Import-CSV 'C:\ordner\demo.csv' -Delimiter ";" -Header (1..9)  
$csv | group '1' | %{  
    $fname = $_.Name -replace '(.*)/(.*)','$2-$1'  
    $_.Group | group '2','3' | %{  
         $g = "$($_.Group.'5'.split(' ')) $($_.Group.'3') $($_.Group.'2')"  
         $tokens = ($_.group | select -Expand '4') -join ','  
         "$g $tokens"  
    } | out-file "C:\ordner\$fname.txt"  
}
Gruß grexit
Experiment626
Experiment626 24.11.2015 um 19:03:39 Uhr
Goto Top
Hallo grexit,
Vielen Dank für die schnelle Hilfe.
Werde es morgen testen. Nutze bislang alles nur
in Batch, da dort bis jetzt alles möglich war.
Powershell ist für mich Neuland.
Kann man das in einer Zeile starten?

Viele Grüsse
Stitch
122990
122990 24.11.2015 aktualisiert um 19:20:50 Uhr
Goto Top
Zitat von @Experiment626:
Kann man das in einer Zeile starten?
powershell -Executionpolicy ByPass -File "C:\Ordner\script.ps1"
da dort bis jetzt alles möglich war.
in Powershell noch wesentlich mehr face-wink vor allem ist dort alles ohne weitere Zusatztools möglich.
In Batch machst du doch 100 Verrenkungen um so simple Dinge zu realisieren. Ist einfach nicht mehr zeitgemäß.
Wird langsam höchste Eisenbahn umzuschwenken ...
Experiment626
Experiment626 24.11.2015 um 19:27:14 Uhr
Goto Top
OK, vielen Dank.
... denke auch, dass das Thema werden muss.