Leser: 22
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
$i=0.1; open quelle, "< quelldatei"; while (<quelle>){ if ($i == 0.1){ $i=0; next; } if ($i == 0){ $out[0]=$_; $lastline=$_; next; } if($_ eq $lastline){ next; } $lastline=$_; @line=split /;/,$_; $out[$i]=$line[$#line]; $i++; } close quelle; open out, "> output"; for $j (0 .. $i){ print out "$out[$j]\n"; } close out;
1
2
3
4
5
6
AKS01;Inhalt_abc;Inhalt_abcd;
AKS02;Inhalt_abc;Inhalt_abcd;Inhalt_abcde;
...
AKS76;Inhalt_abc;Inhalt_abcd;
...
AKS1000;Inhalt_abc;Inhalt_abcd;Inhalt_abcde;
1
2
3
4
AKS01;Inhalt_alt01;Inhalt_alt02; (nichts kopiert)
AKS02;Inhalt_neu01;Inhalt_neu02; (aus Änderungsdatei kopiert)
...
AKS1000;Inhalt_alt01;Inhalt_alt02;Inhalt_alt03; (nichts kopiert)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
# änderungen einlesen open my $cfh, "<", "changes.csv" or die $!; my %changes; while (my $line = <$cfh>) { my ($aks, $rest) = split m/;/, $line, 2; $changes{ $aks } = $rest; } close $cfh; open my $fh, "<", "orig.csv" or die $!; open my $ofh, "<", "new.csv" or die $!; while (my $line = <$fh>) { my ($aks, $rest) = split m/;/, $line, 2; if (exists $changes{ $aks }) { $line = "$aks;$changes{ $aks }"; # newline hängt noch dran } print $ofh $line; }
Quote$line = "$aks;$changes{ $aks }"; # newline hängt noch dran