Leser: 1
9 Einträge, 1 Seite |
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
my $data; # Arbeitsvariable
my $datei;
for my $file (@textdateien)
{
open DAT, $file;
push(@liste,$file); #SPEICHER DIE DATEI IN EIN ARRAY
for my $line (<DAT>)
{
chomp $line; # Den Zeilenumbruch am Ende entfernen
$data .= $line; # und diese Zeile anhängen,falls es über mehrere Zeilen geht
push(@liste,$file);# das führt leider zu zuvielen Dateinamen!
my @saetze = split/(?<=[\.!?])\s*/, $data; #Filtert Sätze raus
open DATEI, ">out.txt"; # Die Ausgabedatei
$counter = 0; # counter initialisieren
for (@saetze)
{
print DATEI $counter++, "; $_ \n"; #Enthält die ID und die Sätze
}
close DATEI;
close DAT;
}
################################################################
#Hier sollen nun die Dateinamen zu den Sätzen gespeichert werden
################################################################
}
open DATEI ,">verweis.txt"; #Enthält die ID und die Dateinamen
foreach(@liste) #KOMMT LEIDER Mist RAUS
{
$counter2++;
print DATEI $counter2.";"."$_\n";
}
close 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 26 27
my %saetze_gefunden; for my $file (@textdateien) { # gesammte Datei einlesen local $/=''; open (DATEI, '<', $file) or die "Konnte '$file' nicht öffnen ($!)\n"; # Datei in sätze zerlegen (my $daten=<DATEI>)=~s/[\r\n]//gs; my @saetze_datei=split(/(?<=[\.!?])\s*/,$daten); close(DATEI); # Alle Sätze durchgehen und dem Hash als Schüssel werwenden. # Als Wert ist ein Array enthalten, das die Dateinamen aufnimmt. push(@{$saetze_gefunden{$satz}},$file) for my $satz (@saetze_datei); } open (REFDAT,'>','verweis.txt') or die "Konnte 'verweis.txt' nicht öffnen ($!)\n"; open (OUTDAT,'>','out.txt') or die "Konnte 'out.txt' nicht öffnen ($!)\n"; # Den Hash durchgehen und die Werte in die Dateien schreiben. my $cnt=0; for my $satz (keys(%saetze_gefunden)) { print OUTDAT "$cnt:$satz\n"; print REFDAT "$cnt:".join(',',@{$saetze_gefunden{$satz}})."\n"; $cnt++; } close (OUTDAT); close (REFDAT);
my @saetze_datei=split(/(?<=[\.!?])\s*/,<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 26 27 28 29 30 31 32 33 34 35 36 37 38 39
my @alle_saetze; my @dateien; for my $file (@textdateien) { local $/=''; open(DAT, '<',$file) or die "'$file' $!\n"; # Datei ganz einlesen (siehe oben $/) # und Zeilenumrüche entfernen # (Habe ich bei meinem Beispiel vergessen :-/ ) (my $data=<DAT>)=~s/[\r\n]+//gs; close(DAT); my @saetze = split/(?<=[\.!?])\s*/, $data; #Filtert Sätze raus for my $satz (@saetze) { # nach dem Satz im Array @alle_saetze suchen my $pos=0; $pos++ while($alle_saetze[$pos] ne $satz && $pos<@alle_saetze); # kein gleicher Satz gefunden, # da die Schleife alle Sätze durchgegangen ist. if( $pos == @alle_saetze); { push(@alle_saetze,$satz); push(@dateien,[$file]); } # Den Satz gibt es schon. else { push(@$dateien[$pos],$file); } } } # Die Ausgabedatei open(DATEI, '>', 'out.txt') or die 'out.txt: $!\n'; print "$i:$alle_saetze[$i]\n" for my $i (0..$#alle_saetze); close(DATEI); #Enthält die ID und die Dateinamen open DATEI ,'>', 'verweis.txt' or die 'verweis.txt: $!\n'; print "$i:".join(',',@$dateien[$i])."\n" for my $i (0..$#dateien); close DATEI;
9 Einträge, 1 Seite |