Rolf-Hubert Pobloth wrote:
Der erste Datensatz hat im Feld1 den Wert KUNDENKARTE und nur in diesem Datensatz soll im neuen Feld7 der Wert mit 000001 beginnen. Die nachfolgenden Zeilen werden ebenfalls im Feld7 nit dem Wert 00001 beschrieben(append).Wenn dann der Datensatz 80 im Feld 1 den Wert KUNDENKARTE hat, soll der Zähler 000002 in das Feld7geschrieben werden bis der nächste Datensatz im Feld1 sich auf KUNDENKARTE ändert..
Quelle: Datei.csv
KUNDENKARTE;;; (Feld2 bis Feld 6 sind IMMER leer) Textzeile Textzeile und dann z.B bei Zeile 80 kommt wieder KUNDENKARTE;;;;;;
Ziel: Datei1.csv
KUNDENKARTE;;;;;00001 Textzeile 2 - 79 haben im Feld7 ebenfalls den Zählerwert 00001 KUNDENKARTE;;;;;00002 Textzeile 81 - 133 haben im Feld7 ebenfalls den Zählerwert 00002 usw bis zum Ende der Dateien
/tmp/datei.csv: KUNDENKARTE;;;;; zeile1-f1;zeile1-f2;zeile1-f3;zeile1-f4;zeile1-f5;zeile1-f6; zeile2-f1;zeile2-f2;zeile2-f3;zeile2-f4;zeile2-f5;zeile2-f6; KUNDENKARTE;;;;; zeile1-f1;zeile1-f2;zeile1-f3;zeile1-f4;zeile1-f5;zeile1-f6; zeile2-f1;zeile2-f2;zeile2-f3;zeile2-f4;zeile2-f5;zeile2-f6; /tmp/insertcounter.sh: counter=0 cat /tmp/datei.csv| while read line do firstfield=`echo $line| awk -F\; '{print $1}'` if [ $firstfield = KUNDENKARTE ] ; then { counter=`expr $counter + 1` echo $line| awk -F\; "{print \$1 \";\" \$2 \";\" \$3 \";\" \$4 \";\" \$5 \";\" \$6 \";\" $counter}" } else echo $line| awk -F\; "{print \$1 \";\" \$2 \";\" \$3 \";\" \$4 \";\" \$5 \";\" \$6 \";\" $counter}" fi done Die awk-Zeilen sind eine einzige Zeile, ist leider durch die Mail umgebrochen. Ausgabe: # /tmp/insertcounter.sh KUNDENKARTE;;;;;;1 zeile1-f1;zeile1-f2;zeile1-f3;zeile1-f4;zeile1-f5;zeile1-f6;1 zeile2-f1;zeile2-f2;zeile2-f3;zeile2-f4;zeile2-f5;zeile2-f6;1 KUNDENKARTE;;;;;;2 zeile1-f1;zeile1-f2;zeile1-f3;zeile1-f4;zeile1-f5;zeile1-f6;2 zeile2-f1;zeile2-f2;zeile2-f3;zeile2-f4;zeile2-f5;zeile2-f6;2 Das kann man noch etwas sauber machen, aber für eine einmalige Gelegenheit reicht es. Wenn das das gewünschte Ergebnis ist, dann musst du die Ausgabe des Scriptes nur noch ein eine Datei lenken. Sandy -- Sandy Antworten bitte nur in die Mailingliste! PMs bitte an: news-reply2 (@) japantest (.) homelinux (.) com -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org