Thread Matching greift nicht!: CSV spliten und Werte prüfen
(2 answers)
Opened by krusty at 2007-04-26 17:39
Hallo,
habe eine CSV Datei die pro Zeile eine ober mehrere 6stellige Buchstaben bzw. Ziffernfolge bzw. gemischt Ziffern und Buchstaben sein kann. Bsp: ABS678;GTR999;O87UJN; Davon gibt es dann so um die 1600 Zeilen. Ich möchte nun ein Skript haben, das prüft, ob pro Zelle jeweils ein 6 stelliger Wert steht. Oder aber kein Wert. Also die Zelle leer ist. Pro Zeile gibt es nämlich 50 Zellen, getrennt durch Semikolon. Wenn das nicht der Fall ist soll ein Counter hochgezählt werden, der mir am Ende des Scriptes eine Ausgabe gibt, wie viele nicht Übereinstimmungen gefunden worden sind. Folgendes Script habe ich bereits geschrieben. Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #!/usr/bin/perl use warnings; use strict; my $path = "/scripte/csv"; my $csv = "test.csv"; my @werte = (); my $count = 1; open(FILE, "<$paht/$csv") || die "Cannot open file $csv!\n"; while(<FILE>) { @werte = split(";"); foreach my $value (@werte) { chomp($value); if(( $value !~ /^[A-Z0-9]{6}$/ ) && ( $value !~ /^$/ )) { $count++; } } } close(FILE); if ( $count > 1 ) { print "DEBUG: ".$count." Fehler gefunden\n"; } Mein Problem ist jetzt, das er mir noch einen Wert von ca. 1580 ausgibt. Für mich sieht das nach den Zeilen der Datei aus. Irgendetwas scheint noch in einer Zelle zu sein. Vermute mal das es ein Return oder ähnliches ist das in der letzten Zelle steht. Nur wie bekomme ich das abgefangen? Stehe momentan auf dem Schlauch, wie ich das abfangen kann. Könnt ihr mir einen Hinweis geben? |