Schrift
[thread]9158[/thread]

parsen



<< >> 3 Einträge, 1 Seite
Gast Gast
 2007-07-05 12:31
#78233 #78233
Hi zusammen,
ich bräucht mal eine Anregung wie ich da an die
Aufgabe rangehen könnte.

Mein File:
####

cat=111,blablabla
blablabla
blablabla
ID=xxx;blablabla

cat=113,blablabla
blablabla
cat=123,blablabla
blablabla
ID=yyy,blablabla

cat=12,blablabla
blablabla
blablabla
ID=aaa,blablabla

cat=841,blablabla
blablabla
blablabla
ID=xxx,blablabla

cat=111,blablabla
blablabla
blablabla
ID=yyy,blablabla

.
.
.
###

Und folgende Ausgabe möchte ich haben:
ID=xxx - cat=111 : cat=841
ID=yyy - cat=113 : cat=123 : cat=111
ID=aaa - cat=12

Diese Abschnittstrenner ist immer eine Leerzeiler. Und in jedem Abschnitt ist quasi die ID eindeutig.

Jemand ne Idee?

ciao,
vic
renee
 2007-07-05 12:44
#78234 #78234
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
ungetestet:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/perl

use strict;
use warnings;

my $file = '/path/to/file.txt';
my %hash;

{
    #Abschnitstrenner auf "\n\n", siehe perldoc perlvar
    local $/ = "\n\n"; 
    open my $fh, '<', $file or die $!;
    while( my $entry = <$fh> ){
        my ($cat,$id) = $entry =~ /(cat=\d+).*(ID=[^,]+)/s;
        push @{ $hash{$id} }, $cat;
    }
}

for my $key ( keys %hash ){
    print $key, " - " , join ":", @{ $hash{$key} },"\n";
}
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/
renee
 2007-07-05 12:50
#78235 #78235
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ein kleiner Fehler war drin. So sollte es funktionieren:
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
#!/usr/bin/perl

use strict;
use warnings;

my $file = '/path/to/file.txt';
my %hash;

{
    #Abschnitstrenner auf "\n\n", siehe perldoc perlvar
    local $/ = "\n\n";
    open my $fh, '<', $file or die $!;
    while( my $entry = <$fh> ){
        my @cats = $entry =~ /(cat=\d+)/g;
        my ($id) = $entry =~ /(ID=[^,;]+)/;
        next unless $id;
        push @{ $hash{$id} }, @cats;
    }
}

for my $key ( keys %hash ){
    print $key, " - " , join(" : ", @{ $hash{$key} }),"\n";
}
\n\n

<!--EDIT|renee|1183625437-->
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/
<< >> 3 Einträge, 1 Seite



View all threads created 2007-07-05 12:31.