Schrift
[thread]12887[/thread]

Doppelte Einträge in einer Datei entfernen

Leser: 2


<< >> 9 Einträge, 1 Seite
Gast Gast
 2008-12-10 12:03
#117031 #117031
Hii,

ich möchte aus mehreren Datensätzen die doppelten Einträge entfernen. Die Datensätze sehen folgendermaßen aus:
Code: (dl )
1
2
3
4
5
6
7
8
9
5.0           2.08      9.496     23
10.0 2.08 5.917 39
10.0 2.08 5.917 39
15.0 1.02 6.823 75
20.0 1.01 14.810 80
20.0 1.01 14.810 80
25.0 1.61 27.117 37
30.0 1.61 71.563 72
30.0 1.61 71.563 72


Mein Code das ich darüber laufenlasse sieht folgendermaßen aus:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
open (in,"filter.txt")|| die "filter.txt file found!";
open (out,">filter_output.txt")|| die "filter_output.txt file found!";
my @array = <in>;

%ha = map{ $_, 1 }@array;
@array_u = keys %ha;
@array_u = sort keys %ha;
foreach(@array_u)
{
print out "$_\n"
}
close(in);
close(out);


Leider bekomme ich nicht den gewünschten Effekt, d.h. die doppelten Einträge werden nicht gelöscht..
Kann mir jemand sagen, was ich falsch mache ?

Grüße,
Kamil
renee
 2008-12-10 12:06
#117033 #117033
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Was gilt als "doppelter Eintrag"?

Edit: Wer lesen kann ist klar im Vorteil ;-)
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/
Gast Gast
 2008-12-10 12:12
#117035 #117035
Hallo renee..

hier ist die Ausgabe die ich bekomme
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
10.0           2.08      5.917     39

15.0 1.02 6.823 75

20.0 1.01 14.810 80

25.0 1.61 27.117 37

30.0 1.61 71.563 72
30.0 1.61 71.563 72

5.0 2.08 9.496 23


ich meine die Zeilen die mit 10, 20 und 30 anfangen, diese doppelten Einträge...
renee
 2008-12-10 12:29
#117036 #117036
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code (perl): (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 strict;
use warnings;

my %seen;

open my $out, '>', 'output.txt' or die $!;
while( my $line = <DATA> ){
    my ($id) = split /\s+/, $line;
    unless( $seen{$id}++ ){
        print $out $line;
    }
}
close $out or die $!;

__DATA__
5.0           2.08      9.496     23
10.0           2.08      5.917     39
10.0           2.08      5.917     39
15.0           1.02      6.823     75
20.0           1.01      14.810     80
20.0           1.01      14.810     80
25.0           1.61      27.117     37
30.0           1.61      71.563     72
30.0           1.61      71.563     72
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/
pq
 2008-12-10 12:32
#117037 #117037
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
oder einfach eine ordentliche tabelle mit unique-constraint anlegen und von der alten in die neue
tabelle umkopieren.
dann bekommst du auch in zukunft keine doppelten einträge mehr, ganz automatisch.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Gast Gast
 2008-12-10 13:50
#117041 #117041
Danke Dir...es läuft problemlos momentan...

Kannst du mir ein Beispiel geben pq ?
Gast Gast
 2008-12-10 15:37
#117048 #117048
Es gibt auch ein Programm "unique", das doppelte Zeilen aus einer Datei entfernt.
Crian
 2008-12-10 15:40
#117049 #117049
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
pq bezieht sich wohl auf den Fall, wenn die Daten in einer Datenbank liegen.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
pq
 2008-12-10 15:42
#117050 #117050
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
ich hab das wohl mit einem anderen thread verwechselt, bei dem mit einer richtigen datenbank
gearbeitet wird.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< >> 9 Einträge, 1 Seite



View all threads created 2008-12-10 12:03.