1 2 3 4 5 6 7 8 9 10
my $daten1 = $daten; $daten1 =~ s%(.*?;).*?;(.*)%$1$2%g; my @daten=split(/\n/,$daten1); @daten=&del_double(@daten); sub del_double{ my %all=(); @all{@_}=1; return (keys %all); }
1
2
$daten sortieren
foreach @daten - suche erste Zeile in $daten und schreibe diese in eine Datei.
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
#! /usr/bin/perl use strict; use warnings; my %data; while ( my $line = <DATA> ) { chomp $line; my ( $id, $date, $value ) = split /;\s+/, $line; # store first occurence of $value with the data $data{$value} = $date if !exists $data{$value}; } # kontrolle use Data::Dumper; print Dumper \%data; __DATA__ ID; Datum; VeränderbareWerte 01; 2011-01-01; abc 02; 2011-01-01; jkl 01; 2011-01-02; abc 01; 2011-01-03; xyz
1 2 3 4 5 6 7 8 9 10 11 12 13 14
#! /usr/bin/perl # skript.pl use strict; use warnings; while ( my $line = <> ) { my ($id, $date, $value ) = split /;\s*/, $line; # gebe Zeile aus, wenn $value noch nicht aufgetaucht ist... print $line if !$seen{$value}++; }
skript.pl input.csv > output.csv
1 2 3 4 5 6 7 8 9 10 11 12 13
my(@daten) = split(/\n/, $daten, 0); #In ein Zeilenarray umwandeln foreach my $line (@daten) { #Array Zeilenweise abarbeiten $line =~ m%(.*?);.*?;(.*)%; #Zeile ohne Datum als Primary Key my $key = $1; my $value = $2; if (!exists $seen{$key}){ print "$line\n"; $seen{$key} = $value; }elsif (! $key ~~ $seen{$key}){ print "$line\n"; $seen{$key} = $value; } }#end foreach duplikate verwerfen
1 2 3 4 5 6 7
if (!exists $seen{$key}){ print OUTDATEI "$line\n"; $seen{$key} = $value; }elsif ($value ne $seen{$key}){ print OUTDATEI "$line\n"; $seen{$key} = $value; }
2012-05-03T15:44:18 LinuxerCode (perl): (dl )print $line if !$seen{$value}++;