Schrift
[thread]11634[/thread]

[S]Möglichkeit um Textdateien aufzuteilen



<< >> 6 Einträge, 1 Seite
pr0ViL
 2008-04-13 15:22
#108298 #108298
User since
2008-04-13
2 Artikel
BenutzerIn
[default_avatar]
Schönen Guten Morgen!

Ich habe hier etwa 20 Textdateien mit je 100.000 Einträgen rumfliegen, die leider aufgeteilt werden müssen. Immer 25 Einträge in eine Textdatei. Die Einträge sind ordenlich untereinander angeordnet und sollen dies auch bleiben

Die Benennung der Listen sollte dann wie folgt sein:

liste1.txt
liste2.txt
...
liste1234.txt

.. und so weiter. Das ganze wäre per Hand enorm viel Arbeit, deshalb wüsste ich gerne, ob man das mit einem Script oder Programm einfacher umsetzen kann, und ob mir das eventuell jemand machen könnte.

Über eine Gegenleistung in Form von Geld können wir sehr gerne reden.

Würde mich sehr freuen wenn mir hier geholfen werden kann,

Mit freundlichen Grüßen,
pr0ViL
pq
 2008-04-13 15:48
#108299 #108299
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
ungetestet:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
for my $file (@list_of_files) {

    open my $read, '<', $file or die $!;
    my $count = 0;
    my $new_name = "$file$count";
    open my $write, '>', $new_name or die $!;
    while (my $line = <$read>) {
        print $write $line;
        if ($. % 25 == 0 and not eof $read) {
            $count++;
            close $write;
            $new_name = "$file$count";
            open $write, '>', $new_name or die $!;
        }
    }
}
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
topeg
 2008-04-13 16:12
#108301 #108301
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
oder so:
Code: (dl )
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
#!/usr/bin/perl

use strict;
use warnings;

my $dateiname='liste%s.txt';
my $lines_per_file=25;


my @files=@ARGV;
die "Bitte Dateien angeben\n" unless(@files);

my $file_cnt=1;
my $out="";
my $line_cnt=0;
for my $file (@files)
{
if(open(my $fh,'<',$file))
{
while(my $line=<$fh>)
{
$line_cnt++;
chomp($line);
$out.="$line\n";
if($line_cnt>=$lines_per_file)
{
my $file_out_name=;
write_out($out,sprintf($dateiname,$file_cnt));
$file_cnt++;
$out="";
$line_cnt=0;
}
}
}
else
{warn "Konnte $file nicht oeffnen ($!)\n"}
}
write_out($out,sprintf($dateiname,$file_cnt)) if($out ne '');

####################################
sub write_out
{
my ($data,$file)=@_;
open(my $fhout,'>',$file) or die "Konnte $file nicht oeffnen ($!)\n";
print $fhout $data;
close($fhout);
}

getestet.

Aufruf: "perl scriptname datei_a datei_b datei_c"
pr0ViL
 2008-04-13 17:54
#108309 #108309
User since
2008-04-13
2 Artikel
BenutzerIn
[default_avatar]
Hallo!

Vielen Dank schonmal für eure Antworten und die damit verbundenen Scripte.

Ich bin allerdings ganz neu in der Materie und daher kommt es leider zu Komplikationen. Eventuell könnt ihr mir ja auf die Sprünge helfen.

Ich habe auf meinem PC ActivePerl -> C:\perl\bin\perl

Nun habe ich eure Script als script.pl auf dem Desktop gespeichert, auf dem sich auf die jeweils zu bearbeitende Textdatei mit den 100.000 Einträgen befindet.

Führe ich nun eure Script aus, so öffnet sich nur kurz das blau-schwarze Fenster und nichts passiert.

Ich denke ich gehe falsch vor, könntet ihr mir eventuell auf die Sprünge helfen und kurz erläutern wie, und in welcher Reihenfolge ich vorgehen muss?

Bereits im Vorraus Danke!,
pr0ViL
lichtkind
 2008-04-13 19:02
#108313 #108313
User since
2004-03-22
5680 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
wie ich dir sagte beispieldaten sind heir hilfreicht und du sagtest auch nicht welches der scripte du gespeichert hast.
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
renee
 2008-04-14 12:12
#108340 #108340
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Starte das Skript aus der DOS-Box heraus und teile uns dann die Fehlermeldung mit...
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/
<< >> 6 Einträge, 1 Seite



View all threads created 2008-04-13 15:22.