Thread Text-Datei in mehrere Dateien splitten (21 answers)
Opened by hybi at 2013-07-23 11:07

renee
 2013-07-26 13:37
#169152 #169152
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Auf die neuen Anforderungen angepasst:

Code (perl): (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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/usr/bin/perl

# das folgende sollte in *jedem* Programm/Modul zu finden sein
use strict;
use warnings;

# für das lesen und schreiben von Dateien
use IO::File;

# Datei mit den Datensätzen
my $file = 'wuw.txt';

# lese Blockweise ein. Ein Block wird von "@@"
# mit Zeilenendezeichen begrenzt
local $/ = '@@' . "\n";

# öffne Datei zum Lesen
my $fh = IO::File->new( $file, 'r' );
while( my $block = <$fh> ) {

    # springe aus der Schleife wenn der Block leer ist
    last if !$block;

    # entferne das "@@"
    chomp $block;

    # in $. ist die "Nummer" des Blocks
    # öffne Datei zum Schreiben
    my $out = IO::File->new( $. . '.txt', 'w' );

    # ersetze "Jahrgang, Seite" durch zwei Eintraege
    $block =~ s{
        ^
        Jahrgang, \s+ Seite \s+
        \[ \s+ ([0-9]+), \s+ ([0-9]+) \s+ \]
        $
    }{Jahrgang         [ $1 ]
Seite            [ $2 ]}xmsg;

    # ersetze Datum/Aktenz.
    $block =~ s{
        ^
        Datum/Aktenz\. \s+
        \[ \s+ (\d+)\.(\d+)\.(\d+) .*? ([^\s]+) \s+ \]
        $
    }{Tag              [ $1 ]
Monat            [ $2 ]
Jahr             [ $3 ]
Aktenzeichen     [ $4 ]}xms;

    # ersetze Abteilung
    $block =~ s{
        ^
        Abteilung \s+
        \[ \s+ ([^\s]+) \s+ (\d+) \s+ \] .*?
        $
    }{Abteilung        [ $1 ]
Abteilungsnummer [ $2 ]}xms;

    $out->print( $block );
}
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/

View full thread Text-Datei in mehrere Dateien splitten