![]() |
![]() |
4 Einträge, 1 Seite |
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
#!C:\Perl\bin\perl.exe -w # Benötigte Variablen my $dep_arc_file = "C:\\Perl\\scripts\\test.csv"; my $dia_ert_file = "C:\\Perl\\scripts\\D925007"; my @arc = (); my @ert = (); open(ARC, $dep_arc_file ) || die "Can not open file $dep_arc_file\n"; while (<ARC>) { # Spaltenueberschrift ignorieren if (! /^Zeilenueberschrift/) { chomp; push (@arc, $_); } } close(ARC); open(DIA, $dia_ert_file) || die "Can not open file $dia_ert_file\n"; while (<DIA>) { chomp; push (@ert, $_); } close(DIA); foreach my $line (@ert) { my $found = 0; my $rest = 1; if ( $line =~ /^xxx(\d{8})/ ) { foreach my $tmp (@arc) { if ($tmp eq $1) { $found = 1; $rest = 2; } } } if (( $found ne 1 ) && ( $rest eq 1 )) { print $line."\n"; } }
krusty+2008-05-07 21:38:04--Mein Ziel ist es, die einzelnen Nummern z.b. 12345678 in der ersten Datei zu finden. Sollten diese nicht gefunden werden, soll die Zeile mit der Nummer und alle folgenden bis zu der nächsten Zeile in der er die Nummer findet ausgegeben werden.
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
#!/opt/local/bin/perl5.10.0 use 5.010; use strict; use warnings; use constant { EXCLUDE_TXT => '2.txt', DATA_TXT => '1.txt' }; my %exclude = do { open my $in, '<', EXCLUDE_TXT or die "Cannot open exclusion list: $!"; my $_; map { chomp; $_ => 1 } <$in>; }; do { open my $in, '<', DATA_TXT or die "Cannot open data file: $!"; while (my $_ = <$in>) { my $flop; print if ( (/^xxx(\d{8})/ && !$exclude{$1}) ... ($flop = (/^xxx(\d{8})/ && $exclude{$1})) and !$flop ); } }
![]() |
![]() |
4 Einträge, 1 Seite |