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-Key: 289215

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

Printed on: April 16, 2024 at 23:04 o'clock

Mitglied: 122990
122990 Nov 24, 2015 updated at 12:37:36 (UTC)
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
Member: Experiment626
Experiment626 Nov 24, 2015 at 18:03:39 (UTC)
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
Mitglied: 122990
122990 Nov 24, 2015 updated at 18:20:50 (UTC)
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 ...
Member: Experiment626
Experiment626 Nov 24, 2015 at 18:27:14 (UTC)
Goto Top
OK, vielen Dank.
... denke auch, dass das Thema werden muss.