Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]8805[/thread]

große txt-datei auslesen + neue daraus generieren: textauslese und ausgabe

Leser: 1


<< >> 6 Einträge, 1 Seite
Gast Gast
 2007-03-01 23:33
#74749 #74749
Hallo Perl-Profis,
ich habe eingie Fragen an Euch.

1- Nehmen wir an, es gäbe eine 4000-Seiten-txt-Datei, mit vielen Themas in kleinen Schnipseln verstreut drin.

2- Jedes dieser Schnipsel ist durch ein Leerzeichen voneinander getrennt.

3- Gäbe es ein Perl-Programm, das diese Datei nach bestimmten Wörtern "vollautomatisch" durchsuchen kann und alle Schnipsel (passend zum gesuchtem Wort) in eine separate txt-Datei ausgeben könnte??!

4- Gibt es irgendwelche Perl-Scripts, die solche Geschichten auf der localen Festplatte machen können?!

5- Brauche echt Hilfe. Ohne Perl wäre es eine langwierige Sortiererei. Mit Perl wäre es echt praktisch.

6- Viele Grüße. Alex.
Thorium
 2007-03-01 23:42
#74750 #74750
User since
2003-08-04
232 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hier ist die Idee für ein selber gebautes Script:

glob() oder opendir/readdir oder File::Find (modul) zum Suchen der Files
open() zum öffnen der grossen Datei (read)
open() zum öffnen der kleinen Datei (write)
while (<Filehandler>) zum zeilenweisen auslesen ohne zuvor alles zu lesen (also *kein* @inhalt = <Filehandler> und auch kein foreach)
m// regex zum suchen des Worts / der Wörter in der Zeile
je nach Treffer neues close/open eines anderen Ausgabefiles
Je nach Bedarf vor der while-schleife Variablen zum iterieren definieren...

Damit sollte man jegliche Grösse von Dateien schaffen...
perlfunc zu schlüsselwörtern befragen falls etwas nicht klar ist.\n\n

<!--EDIT|Thorium|1172785969-->
Per|li|nist der; -en, -en <zu ↑...ist>: a) Anhänger, Vertreter der radikalen Perlinisten die Perl als die einzig wahre Sprache ansehen; b) Mitglied einer perlinistischen Community.
MisterL
 2007-03-02 00:17
#74751 #74751
User since
2006-07-05
334 Artikel
BenutzerIn
[default_avatar]
Man könnte auch noch CPAN:Tie::File verwenden...

Gruss MisterL
“Perl is the only language that looks the same before and after RSA encryption.”
renee
 2007-03-02 16:51
#74752 #74752
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Erstmal ein paar Anmerkungen:

*) Unbedingt Wiki:[tt]use strict[/tt] verwenden
*) Fehler von open abfangen.
*) 3-Arg-Form von open verwenden.
*) Inhalt mit open auslesen...

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/perl

use strict;
use warnings;

my $inputfile = 'datei.txt';

# eingabe für gesuchtes wort
my $suchwort = <STDIN>;
chomp $suchwort;

{
local $/;
open my $fh,'<',$inputfile or die $!;
my $stoff = <$fh>;
}


my $ausgabe = $suchwort . ".txt";
open my $ofh,">",$ausgabe or die $!;
print {$ofh} $stoff or die $!;
close $ofh or die $!;
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
 2007-03-02 16:36
#74753 #74753
Hallo, und vielen Dank für die Hilfe, allerdings bin ich nicht sehr weit gekommen!

Folgende Kode:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/perl -w

$suchwort = <stdin>;   # eingabe für gesuchtes wort

$stoff = <datei.txt>;     #text aus großer txt-datei

$ausgabe = "ausgegeben.txt";   #ausgabe in neue datei

open(FILE,">$ausgabe");        #öffne neue datei

print FILE "$stoff";           #schreibe in neue datei


Was mache ich hier falsch?

Kann man das ganze so gestalten dass, statt "ausgegeben.txt",
die "neue datei" als "gesuchtes wort" benannt wird?

Viele Grüße. Alex

Edit: Code-Tags von Betterworld\n\n

<!--EDIT|betterworld|1172923984-->
betterworld
 2007-03-03 14:20
#74754 #74754
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Ich habe mal die Threads verbunden.
<< >> 6 Einträge, 1 Seite



View all threads created 2007-03-01 23:33.