chill0r55555
Mitglied
Hallo,
ich habe ein Denkproblem mit einem Perl Skript und komme deshalb nicht weiter.
Und zwar habe ich 2 Dateien:
user1.txt & user2.txt
user1.txt hat den Inhalt:
user2.txt hat den Inhalt:
Nun möchte ich die Dateien mit einander vergleichen, also wenn die Namen von user2.txt
in user1.txt vorkommen soll nix gemacht werden, und wenn nicht dann soll eine Datei beschrieben werden.
Mein Skript sieht so aus:
Meine juhu.txt sieht aber nun leider wie folt aus:
Da ja im ersten Durchlauf der äusseren For-Schleife x=1 ist wird nur der Benutzer
harald ausgeschieden und danach dann der Benutzer otto. Jedoch steht nun wenn x=2 der Benutzer
harald in dem neuen "Block" der Datei juhu.txt. Ich würde es aber gerne so haben,
dass alle User aus user2.txt nicht in die juhu.txt eingetragen werden. In der juhu.txt sollen
dann auch keine User doppelt drin stehen. Ich steh grade echt auf dem Schlauch. Ich hoffe es war
verständlich und mir kann einer helfen? Vorweg schonmal danke.
MfG
chill0r55555
ich habe ein Denkproblem mit einem Perl Skript und komme deshalb nicht weiter.
Und zwar habe ich 2 Dateien:
user1.txt & user2.txt
user1.txt hat den Inhalt:
Code:
harald:/tmp
otto:/home/otto
klaus:/tmp
karl:/opt
user2.txt hat den Inhalt:
Code:
harald:
otto:
Nun möchte ich die Dateien mit einander vergleichen, also wenn die Namen von user2.txt
in user1.txt vorkommen soll nix gemacht werden, und wenn nicht dann soll eine Datei beschrieben werden.
Mein Skript sieht so aus:
Code:
#!/usr/bin/perl -w
use strict;
my @array;
my @array2;
my @tempArray1 = ();
my @tempArray2 = ();
my $count=0;
my $datei;
my $x;
my $z;
open ($datei, '<', "user1.txt") or die $!;
while(<$datei>)
{
# Zeichen am Zeilenende löschen
chomp;
@array = split(/:/, $_);
$tempArray1[$count++] = $array[0];
}
close $datei;
$count = 0;
open ($datei, '<', "user2.txt") or die $!;
while(<$datei>)
{
# Zeichen am Zeilenende löschen
chomp;
@array2 = split(/:/, $_);
$tempArray2[$count++] = $array2[0];
}
close $datei;
for(my $x=0; $x <= $#tempArray2; ++$x)
{
for(my $z=0; $z <= $#tempArray1; ++$z)
{
# Übereinstimmung
if($tempArray1[$z] ne $tempArray2[$x])
{
#system ("echo '".$tempArray1[$z]."' >> juhu.txt");
}
}
}
Meine juhu.txt sieht aber nun leider wie folt aus:
Code:
otto
klaus
karl
harald
klaus
karl
Da ja im ersten Durchlauf der äusseren For-Schleife x=1 ist wird nur der Benutzer
harald ausgeschieden und danach dann der Benutzer otto. Jedoch steht nun wenn x=2 der Benutzer
harald in dem neuen "Block" der Datei juhu.txt. Ich würde es aber gerne so haben,
dass alle User aus user2.txt nicht in die juhu.txt eingetragen werden. In der juhu.txt sollen
dann auch keine User doppelt drin stehen. Ich steh grade echt auf dem Schlauch. Ich hoffe es war
verständlich und mir kann einer helfen? Vorweg schonmal danke.
MfG
chill0r55555