Leser: 1
![]() |
|< 1 2 3 >| | ![]() |
24 Einträge, 3 Seiten |
renee+2008-06-18 14:11:32--Stringvergleiche werden mit eq gemacht...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
#!/usr/bin/perl use strict; use warnings; use Tie::File; my $file_a = 'a.txt'; my $file_b = 'b.txt'; tie my @b_lines, 'Tie::File', $file_b or die $!; open my $fh, '<', $file_a or die $!; while( my $zeile = <$fh> ){ if( grep{ $_ eq $zeile }@b_lines ){ print "Zeile [$zeile] sowohl in $file_a als auch in $file_b vorhanden\n"; } else{ print "Zeile [$zeile] nur in $file_a vorhanden\n"; } } close $fh; untie @b_lines;
cherished+2008-06-18 14:20:55--Ist das ne Hausaufgabe, in der das so geforder ist? Weil:ich muss das so machen :
ich nehme die erste ID von a.txt suche diese in der b.txt und muss dann Spalte 1 von a.txt mit spalte 1 von b.txt vergleichen sind die gleich dann die 2 spalte etc.pp. jenachdem wie viel halt dahinter sind.
1
2
3
4
5
Vergleiche Spalte1
Wenn gleich, dann vergleiche Spalte2
Wenn gleich, dann vergleiche Spalte 3
Wenn gleich, dann vergleiche Spalte 4
Wenn gleich, dann gibt "toll" aus
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
#!/usr/bin/perl use strict; use warnings; use Tie::File; my $file_a = 'a.txt'; my $file_b = 'b.txt'; tie my @b_lines, 'Tie::File', $file_b or die $!; open my $fh, '<', $file_a or die $!; while( my $zeile = <$fh> ){ chomp $zeile; my @spalten = split /;/, $zeile; ZEILE: for my $zeile_b ( @b_lines ){ my @spalten_b = split /;/, $zeile_b; if( @spalten == @spalten_b ){ for ( 0..$#spalten ){ next ZEILE unless $spalten[$_] eq $spalten_b[$_]; } print "Alles klar: $zeile\n"; } } } close $fh; untie @b_lines;
1
2
3
4
5
6
7
8
9
10
11
12
C:\Perl>compare.pl
Alles klar: 10_01;23;22364;29864
Alles klar: 10_02;24;22365;29865
Alles klar: 10_04;27;22367;29868
Alles klar: 10_05;23;22323;29834
Alles klar: 10_06;28;2231264;21219864
Alles klar: 10_08;24;222364;3329864
Alles klar: 10_09;23;22364;2986423
Alles klar: 10_12;24;22365;29865
Alles klar: 10_13;25;22366;29866
Alles klar: 10_15;23;22323;29834
Alles klar: 10_17;25;23442364;23229864
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
#!/usr/bin/perl use strict; use warnings; use Tie::File; my $file_a = 'a.txt'; my $file_b = 'b.txt'; tie my @b_lines, 'Tie::File', $file_b or die $!; open my $fh, '<', $file_a or die $!; while( my $zeile = <$fh> ){ chomp $zeile; if( grep{ $_ eq $zeile }@b_lines ){ print "Alles klar: $zeile\n"; } } close $fh; untie @b_lines;
1
2
3
4
5
6
7
8
9
10
11
12
C:\Perl>compare2.pl
Alles klar: 10_01;23;22364;29864
Alles klar: 10_02;24;22365;29865
Alles klar: 10_04;27;22367;29868
Alles klar: 10_05;23;22323;29834
Alles klar: 10_06;28;2231264;21219864
Alles klar: 10_08;24;222364;3329864
Alles klar: 10_09;23;22364;2986423
Alles klar: 10_12;24;22365;29865
Alles klar: 10_13;25;22366;29866
Alles klar: 10_15;23;22323;29834
Alles klar: 10_17;25;23442364;23229864
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
my $i=0;
my $solldatei = 'a.txt';
my $istdatei = 'b.txt';
open my $filehandle, '<', $solldatei;
open my $filehandle1, '<', $istdatei;
while( my $ziele = <$filehandle> )
{
@test = split(/;/, $ziele);
while( my $ziele1 = <$filehandle1>)
{
@test1 = split(/;/, $ziele1);
print @test[0];
print " @test1[0] \n";
if(@test[0]eq@test1[0])
{
print "@test[0]";
print " und";
print " @test1[0]";
print " COOL!\n";
}
}
}
close $filehandle;
close $filehandle1;
![]() |
|< 1 2 3 >| | ![]() |
24 Einträge, 3 Seiten |