Unterschiedliche Datei-Inhalte ausfiltern

Hi everybody,
wie ich sehe, treffen sich hier viele Spezialisten. Vielleicht kann mir einer helfen: ich brauche einen Algorithmus (ein Perl-Programm), der mir unterschiedliche Datei-Inhalte ausgibt:

  • meine Datei hätte 1000 Zeilen
  • wären alle verschieden, liefert der Algorithmus 1000 Zeilen
  • wären alle gleich, liefert er eine Zeile
  • usw.
    Allgemeingültig habe ich das noch nicht hinbekommen. Setze ich maximal 10 Unterschiede voraus, kopiere ich die Abfragen und vergleiche damit desto öfter, je mehr Unterschiede ich gefunden habe. Schon mal vielen Dank, Rupert

Hallo Rubert,

aaalso nicht gnaz das wonach Du gefragt hast:
wenn es denn nicht Perl sein muss, kannst Du mittels den GNU Tools sort und uniq das erreichen was Du willst.

Ansonsten überlege ich mir grade ob Dir nicht folgendes reichen würde:

foreach $Zeile ()
{
if ($Zeile not in @uniqlist)
{push @uniqlist, $Zeile}
}

Dann haettest Du in @uniqlist jede Zeile einmal, sortiert nach ihrem ersten Vorkommen. Statt dem Array kannst Du natürlich auch eine 2. Datei nehmen (mit erhöhtem Zeit- und IO Aufwand dafuer mit weniger Speicherbedarf).

Dazu folgender Codeschnipsel:
@mehrfach=(‚eins‘,‚eins‘,‚zwei‘,‚drei‘,‚eins‘,‚drei‘);
@uniq = grep { ! $seen{$_} ++ } @mehrfach;

Hilft das ?

Arne

Benutze einfach einen Hash mit den Zeilen als key.:

open INF, "myfile";
while ($line=) {
 chomp ($line);
 if (defined( $h\_search{$line} )) { 
 $h\_search{$line)++; 
 } else { 
 $h\_search{$line}=0;
 }
}
close INF;

foreach $key (keys %h\_search) { print "Zeile: $key\nVorkommen:".$h\_search{$key}."\n\n"; }

holli

Es funzt! Arne hat mich schon auf den richtigen Weg gebracht, aber so gut und knapp wie Markus hatte ich es noch nicht! Vielen Dank aus München von Rupert