Hallo,
ich will ein Skript schreiben, welches die folgende Datei konvertiert (von *.csv nach *.xls).
Bisheriges Skript:
Mit meinem bisherigen Skript werden die Dezimalkommas in Dezimalpunkte umgewandelt, aller dings habe ich nicht den leisesten Schimmer, wie ich den Rest anfangen soll.
Ich schreib die fehlenden Bedingungen mal im Textformat auf:
- durchsuche Zeile nach "
---> wenn Anführungszeichen doppelt ""
------->gebe nur eines der beiden Anführungszeichen aus
-----------> Feld in "" setzen
-durchsuche Zeile nach Komma
----> wenn gefunden
---------> Feld in "" setzen
- erst jetzt dürfen die Feldtrenner ; in , umgewandelt werden.
Danke für eure Hilfe(stellung)
Gruß
Simon
ich will ein Skript schreiben, welches die folgende Datei konvertiert (von *.csv nach *.xls).
Dezimalzahlen: 123,456 nach 123.456
Anführungszeichen: doppelte "" nach "
Feldtrenner: ; nach ,
Feldtrenner2: wenn sich innerhalb eines Feldes ein Zeichen befindet, weches nicht alnum
bzw. alpha ist, so muss das Feld in "" gesetzt werden.
Code:
Original geändert
PG;Produktgruppe;Absatz;Umsatz; --->PG,Produktgruppe,Absatz,Umsatz,
0;- nicht zugeordnet-;7648;-198298,09; ---> 0,"-nicht zugeordnet-",7648,-198298.09,
10000;L;2;--2,52; ---> 10000,L,2,"--2,52",
12000;Ver,s,a""n"d"kosten;49;+261,42; ---> 12000,"Ver,s,a"n"d"kosten",49,+261.42,
11013;BIBB-K, test;5;v77,65; --->..........usw...........
11021;F-BP\; Test;61;15,76;
11023;F-U,e\;test;23;42,03;
11043;O-G;4;14,47;
11044;O-V;24;55,09;
11050;StA Werbeartikel;38;736,20;
11051;StA Formulare;2412;35772,23;
11052;StA Stammbuch;3425;69914,64;
11053;StA Aktionsstammbuch;32;666,15;
11054;StA Traumappe;11;738,00;
11055;StA Zubehör;1534;609,10;
11061;V-A;26;249,33;
11091;V-BFZ;1;9,05;
11111;V-BUS + V-R;1;2,10;
11171;V-DIHT;2;49,82;
11201;V-F;4;111,78;
11261;V-OECD;1;40,65;
11271;V-Politik;2;27,86;
11401;Z-BWP;1298;16006,72;
11411;Z-DA;302;10001,88;
11451;Z-PRIMAR;854;15865,52;
11461;Z-WM;2;24,30;
11920;DIHT-I;55;114,34;
Bisheriges Skript:
Code:
#!/bin/sh
#
# cvs_sed: Konvertiert *.csv-Dateien nach *.xls-Dateien
if [ "$#" -lt 1 ]
then
echo "Aufruf: csv_sed dateiname(n).cvs"
else
while [ "$#" -gt 0 ]
do
dateiname=$1
sed 's/\([0-9]\{1,\}\),\([0-9]\{1,\}\)/\1.\2/g' $dateiname > $(basename $dateiname .csv).xls
shift
done
fi
Mit meinem bisherigen Skript werden die Dezimalkommas in Dezimalpunkte umgewandelt, aller dings habe ich nicht den leisesten Schimmer, wie ich den Rest anfangen soll.
Ich schreib die fehlenden Bedingungen mal im Textformat auf:
- durchsuche Zeile nach "
---> wenn Anführungszeichen doppelt ""
------->gebe nur eines der beiden Anführungszeichen aus
-----------> Feld in "" setzen
-durchsuche Zeile nach Komma
----> wenn gefunden
---------> Feld in "" setzen
- erst jetzt dürfen die Feldtrenner ; in , umgewandelt werden.
Danke für eure Hilfe(stellung)
Gruß
Simon