hospiman
Goto Top

Spalten mit Inhalt an csv mit Batchscript anfügen

Hallo an die Profis,

ich habe eine .csv Datei die ich jeden Tag aktualisiert bekomme. Um die in einer Software weiterzuverarbeiten fehlen mir Spalten mit immer dem selben Inhalt.

Bsp.
org Datei

Spalte1;Spalte2;Spalte3
112222;5555555;333333
112223;8888888;555555
112224;9999999;666666

benötigtest Format
Spalte1;Spalte2;Spalte3;neueSpalte
112222;5555555;333333;11
112223;8888888;555555;11
112224;9999999;666666;11

Content-Key: 224137

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

Printed on: April 19, 2024 at 19:04 o'clock

Member: Lochkartenstanzer
Lochkartenstanzer Dec 10, 2013 updated at 09:45:53 (UTC)
Goto Top
Zitat von @hospiman:

org Datei
Spalte1;Spalte2;Spalte3
112222;5555555;333333
...

benötigtest Format
Spalte1;Spalte2;Spalte3;neueSpalte
112222;5555555;333333;11
...

Moin

sed -e 's:$:;11:g' datei.csv > neuedatei.csv

sollte es tun.

lks


PS: sed gibt es im cygwin-Paket oder als separates windows-binary zum download, falls es unter windows benötigt wird.
PPS: Falls tatsächlich die Überschrift korrekt umgesetzt werden muß, kann man das auch so schreiben:

sed -e 's:$:;11:g' datei.csv | sed -e 's:Spalte1;Spalte2;Spalte3;11:Spalte1;Spalte2;Spalte3;neueSpalte:g'  > neuedatei.csv
Member: hospiman
hospiman Dec 10, 2013 at 10:13:11 (UTC)
Goto Top
Vielen Dank für Deine schnelle Antwort Lochkartenstanzer,

bin da bisl unbeholfen über ein Batchscript ist das nicht möglich oder ? Ich habe cygwin binary herunter geladen leider bekomme ich über cmd das der Befehl nicht verfügbar ist.
Member: Lochkartenstanzer
Lochkartenstanzer Dec 10, 2013 updated at 10:30:20 (UTC)
Goto Top
Zitat von @hospiman:

Vielen Dank für Deine schnelle Antwort Lochkartenstanzer,

bin da bisl unbeholfen über ein Batchscript ist das nicht möglich oder ? Ich habe cygwin binary herunter geladen leider
bekomme ich über cmd das der Befehl nicht verfügbar ist.

Du mußt den Pfad mit in die PATH-Variable aufnehmen und beim Installieren drauf achten, daß sed mit installiert wird.

Du kannst natürlich die Zeile in ein bashscript opacken und dann mit bash.exe starten.

Unter normalem Batch machst Du einfach eine Forschleife, die jede Zeile der Datei in eine variable packt und diese dann mit ";11" erweitert und ausgibt

Das kann ich alledings nicht so schnell aus den Fingernschütteln, da gibt es geeignetere Kollegen hier dafür.

lks
Member: hospiman
hospiman Dec 10, 2013 at 10:34:40 (UTC)
Goto Top
Ich danke Dir erstmal aber ich denke mit einem Batchscript komm ich für mich weiter, vielleicht meldet sich noch mal jemand
Member: pieh-ejdsch
pieh-ejdsch Dec 10, 2013 at 10:35:30 (UTC)
Goto Top
Moin,

Als Batch in etwa so:
@Echo off
Setlocal
Set in=org_Datei
Set out=out_%in%
Set Kopf=spalte_neu
Set wert=11
>"%out%" (For /f "usebackq delims=" %%i in ("%in%") Do (  
  If defined Kopf Echo %%i;%kopf%
  If Not defined Kopf Echo %%i;%wert%
  Set "Kopf="  
))

Gruß Phil
Member: hospiman
hospiman Dec 14, 2013 at 16:09:22 (UTC)
Goto Top
Vielen Dank pieh-ejdsch ,

das funktioniert prima. Jetzt habe ich jedoch noch ein kleines Problem in der org. Datei stehen Preise mit "." als Dezimaltrenner (Bsp. für 63,20 -> 63.20) und er macht mir 6320.000000 aus dem Wert. Wäre schön wenn du mir vielleicht noch mal helfen könntest.