Hey Leute,
Ich habe zwei unterschiedliche Dateien. Bei diesen Dateien soll der gleiche String ausgegeben werden.
Datei 1:
Aaa
Bbb
Ccc
Datei 2:
Aaa
Bbb
Cdd
Dann wird aaa und bbb ausgegeben. Das funktioniert auch.
Aber wie löse ich dieses Beispiel:
Datei 1:
Aaa.aa
Bbb.bb
cd.bb
Datei 2:
Aaa
Bbb
Fd.bb
Hier sollte dann aaa.aa und aaa – bbb.bb und bbb zutreffen. Also das vor dem Punkt muss zutreffen.
Wie mach ich das?
Hier sind noch meine zwei Scripts welche ich benutze:
#differents between two files
use strict;
use warnings;
use Text::Diff;
use Class::CSV;
open(FILE, ">/home/Documents/Compare/diff.csv") or die "Cannot open file";
my $diffs = diff '/home/Documents/Compare/prtg.csv' => '/home/Documents/Compare/serverliste.csv';
print $diffs;
print FILE "$diffs";
close(FILE);
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
use strict;
use warnings;
use Class::CSV;
my $f1 = "/home/Documents/Compare/prtg.csv";
my $f2 = "/home/Documents/Compare/serverliste.csv";
my $outfile = "/home/Documents/Compare/final_result.csv";
my %results = ();
open FILE1, "$f1" or die "Could not open file:\n";
while(my $line = <FILE1>)
{
$results{$line}=1;
}
close(FILE1);
open FILE2, "$f2" or die "Could not open file:\n";
while(my $line =<FILE2>)
{
$results{$line}++;
}
close(FILE2);
open (OUTFILE, ">$outfile") or die "Cannot open $outfile for writing \n";
foreach my $line (keys %results)
{
print OUTFILE $line if $results{$line} == 1;
}
close OUTFILE;