Nun meine Idee wäre folgendes: Tatsache ist (wenn ich mich nicht irre), dass * jede Feld zwischen 2 " ist * und als Feldseparator , verwendet wird. Das heisst wenn ich die Zeichnfolge "," als Feldseparator benutze bin ich auf der Richtige Seite oder??? Jetzt sieht das Script so aus: ---------------->8------------------snip-------------->8-------------------- #!/usr/bin/perl -w open OUT,">userlist.txt"; print OUT "NACHNAME:VORNAME:GEBURTSTAG:KLASSE\n"; while(<>) { s/","/:/g; s/"//g; s/,/ /g; @line = split /:/; $Klasse = $line[52] || $line[53]; $Klasse =~ s/^0//g; $Klasse =~ s/ //g; $Klasse =~ s/\//-/g; $Klasse = uc($Klasse); print OUT "$line[3]:$line[6]:$line[10]:$Klasse\n"; } ---------------->8------------------snap-------------->8-------------------- Könnte jemand das bitte testen? On Sun, Oct 05, 2003 at 06:35:31PM +0200, Dieter Kroemer wrote:
Am Sonntag, 5. Oktober 2003 11:16 schrieb Frank Wein:
Evtl. wäre ein Script nützlich das irgendwie vorher die Gültigkeit der Datei prüft, anhand Anzahl der Felder, Kommas, "" usw.
Gute Idee - habe ich gleich mal umgesetzt:
Die Standardanzahl der Datensätze liegt bei 245, wenn man als Feldtrenner das , verwendet. Um alle Schüler aufzulisten, bei denen zu viele Kommatas da sind (also auch zu viele Felder), könnte man folgende Zeile auf die Rohdaten (in meinem Fall heißt diese Datei sd-eigne.prn) loslassen:
cat sd-eigne.prn |awk -F',' '{print NF" " $2}'|grep 245 -v
Das Ergebnis sieht dann bei uns folgendermaßen aus (Namen sind "ausgesternt"):
246 "RS 6 B M H***" 246 "RS 7 B M B***" 247 "RS 7 B M E*" 246 "RS 7 C W H*" 246 "RS 7 E M P*" 246 "RS 8 A M B*" 247 "RS 8 D M E*" 247 "RS 9 D W S*" 247 "RS 9 E/4 W A*" 248 "RS 10 C W W*" 246 "RS 10 F/4 M A*"
Macht man das ganze mit den " als Feldtrenner, sieht der Befehl folgendermaßen aus (jetzt sind es standardmäßig 459 Feldtrennzeichen): cat sd-eigne.prn |awk -F'"' '{print NF" " $2}'|grep 459 -v (das " ist von ' eingerahmt).
und da erhalte ich _keinen_ Ausreißer - d.h. ich werde auf jeden Fall als Feldtrenner die " verwenden, da ich keine Lust habe jedes Schuljahr die Rohdaten im Sekretariat zu exportieren, dann an einem Linuxrechner zu sehen, ob sich wieder ein Komma zuviel eingeschlichen hat, gegebenenfalls wieder ins Sekretariat zu rennen, die Daten ausbessern lassen und dann wieder neu zu exportieren.
-- Viele Grüße/Kind regards (o_ (o_ Dieter //> (o_ (o_ //\ http://www.linux-in-der-schule.de V_)_ (/)_ (\)_ V_/_
-- Um die Liste abzubestellen, schicken Sie eine Mail an: slss-unsubscribe@suse.com Um eine Liste aller verf?gbaren Kommandos zu bekommen, schicken Sie eine Mail an: slss-help@suse.com
-- ----------------------------------- Péter Varkoly -o) SuSE Linux AG /\\ e-mail: Peter.Varkoly@suse.de _\_/ Tel.: +49-911-74053484 Mobil.: +49-179-1277635 -----------------------------------