Schrift
[thread]7792[/thread]

daten vergleichen (Seite 2)

Leser: 2


<< |< 1 2 >| >> 16 Einträge, 2 Seiten
miki280
 2006-03-15 13:33
#63802 #63802
User since
2005-12-07
18 Artikel
BenutzerIn
[default_avatar]
danke, werd ich gleich ausprobieren!
stimmt das vielleicht was ich da fabriziert habe?
havi
 2006-03-16 15:04
#63803 #63803
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
Code: (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
#!/usr/bin/perl

use warnings;
use strict;

# Datei 1 einlesen und Zeile merken
open(EIN1, "<Eingabedatei1.txt") or die $!;

my %pnr;

while(<EIN1>) {
my $zeile = $_;
$pnr{$zeile} = 1;
} # while
close(EIN1) or die $!;

# Datei 2 einlesen, verleichen und wenn Zeile gleich ist ausgeben
open(EIN2, "<Eingabedatei2.txt") or die $!;
open(AUS, ">Ausgabedatei.txt") or die $!;

while(<EIN2>) {
print AUS $_ if defined $pnr{$_};
} # while

close(EIN2) or die $!;
close(AUS) or die $!;
renee
 2006-03-16 17:25
#63804 #63804
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
@havi: Genau die sollen aber nicht ausgegeben werden, denn dafür gibt es ja auch den genannten Einzeiler...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Linuxer
 2006-03-16 18:14
#63805 #63805
User since
2006-01-27
3872 Artikel
HausmeisterIn

user image
Hi,

mein Vorschlag fuer Zeige alle Zeilen, die nicht gemeinsam in aa.txt und bb.txt vorkommen:

[quote=aa.txt,2005.03.16 17:10]AAA
BBB
CCC[/quote]

[quote=bb.txt,2005.03.16 17:10]BBB
DDD
EEE[/quote]

Code: (dl )
perl -e 'while ( <> ) { $hh{$_}++; } for ( sort keys %hh ) { print $_ if $hh{$_} == 1; }' aa.txt bb.txt


Ausgabe:
Code: (dl )
1
2
3
4
AAA
CCC
DDD
EEE


Der Einzeiler ist auf Linux erstellt und funktioniert dort. Wenn die Ausgabe in einer Datei landen soll, dann ein > cc.txt anhängen.

[edit] Operator geändert [/edit]\n\n

<!--EDIT|Linuxer|1142526253-->
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
[E|B]
 2006-03-16 21:04
#63806 #63806
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Der Windozer kennt für solch lustige Fälle windiff bzw cmp. :)\n\n

<!--EDIT|[E|B]|1142535990-->
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
havi
 2006-03-17 09:06
#63807 #63807
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
[quote=renee,16.03.2006, 16:25]@havi: Genau die sollen aber nicht ausgegeben werden, denn dafür gibt es ja auch den genannten Einzeiler...[/quote]
Code: (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
#!/usr/bin/perl

use warnings;
use strict;

# Datei 1 einlesen und Zeile merken
open(EIN1, "<Eingabedatei1.txt") or die $!;

my %pnr;

while(<EIN1>) {
my $zeile = $_;
$pnr{$zeile} = 1;
} # while
close(EIN1) or die $!;

# Datei 2 einlesen, verleichen und wenn Zeile gleich ist ausgeben
open(EIN2, "<Eingabedatei2.txt") or die $!;
open(AUS, ">Ausgabedatei.txt") or die $!;

while(<EIN2>) {
print AUS $_ if defined $pnr{$_}; # gleiche Zeilen ausgeben
print AUS $_ if not defined $pnr{$_}; # ungleiche Zeilen ausgeben
} # while

close(EIN2) or die $!;
close(AUS) or die $!;
<< |< 1 2 >| >> 16 Einträge, 2 Seiten



View all threads created 2006-03-15 11:38.