Schrift
[thread]8621[/thread]

Suche in bestimmten Zeilen nach bestimmtem Wort (Seite 3)

Leser: 1


<< |< 1 2 3 >| >> 29 Einträge, 3 Seiten
renee
 2007-01-18 14:49
#72897 #72897
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Zeig doch mal, wie Du Dir die ausgabe wünscht...
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/
nepos
 2007-01-18 14:51
#72898 #72898
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Mit Data::Dumper geht das auch nicht spaltenweise.
PerlProfi
 2007-01-18 14:53
#72899 #72899
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Da musst dir wohl selbst eine Routine für schreiben, oder ein anderes Modul verwenden.
Wobei du hier warscheinlich schnell was selbst machen kannst.
kabazza
 2007-01-18 15:34
#72900 #72900
User since
2006-11-23
23 Artikel
BenutzerIn
[default_avatar]
ich hätte das ganze gerne in etwa so (hier schlecht formatiert...):

AA BB CC DD
dummyA1 dummyA2 dummyA3 dummyA4
dummyB1 dummyB2 dummyB3 dummyB4
renee
 2007-01-18 15:56
#72901 #72901
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wenn alles in @result ist...

Geht sicherlich noch eleganter, aber so auf die Schnelle:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
my @headers = qw(AA BB CC DD);
my $format = "%-15s %-15s %-15s %-15s\n";

print sprintf($format,@headers);
for my $sresult(@result){
my @texte;
for my $head(@headers){
my ($line) = grep{$_ =~ /^$head/}@$sresult;
$line = " " unless $line;
my $text = (split /\s+/,$line)[1];
$text ||= " ";
push @texte,$text;
}
print sprintf($format,@texte);
}
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/
kabazza
 2007-01-18 16:42
#72902 #72902
User since
2006-11-23
23 Artikel
BenutzerIn
[default_avatar]
was bedeutetdie zeile
$text ||= " ";
?
renee
 2007-01-18 16:46
#72903 #72903
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wenn die Variable $text einen "unwahren" Wert (0,"0","",undef) enthält, wird ihr " " zugewiesen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/perl

use strict;
use warnings;

my $var = undef;
$var ||= 2;
# $var -> 2

$var ||= "test";
# $var -> test

$var = 0;
$var ||= 'hallo';
# $var -> hallo

$var = "";
$var ||= 'perl-community.de';
# $var -> perl-community.de
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/
kabazza
 2007-01-18 18:55
#72904 #72904
User since
2006-11-23
23 Artikel
BenutzerIn
[default_avatar]
als ausgabe bekomm ich nur den header und dann eine leere tabelle mit einigen leeren zeilen.in @result stehen die hex-werte wenn ich es mir ausgeben lasse. bei "print Dumper(@result);" kommt alles normal.
renee
 2007-01-18 21:27
#72905 #72905
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wenn ich diesen Code hier ausführe:
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
#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;

my @result;

my $file = '/path/to/file';
open my $fh,"<",$file or die $!;
local $/ = "\n...\n";
while(my $entry = <$fh>){
my $bool = 0;
my @lines = split /\n/,$entry;
my @aacc = grep{/^(?:AA|CC)/}@lines;
my @temp = grep{/^(?:BB|DD|EE)/}@lines;
if(grep{/Mercedes/}@aacc){
push @result,\@temp;
}
}
close $fh;

print Dumper(\@result);

my @headers = qw(BB DD EE);
my $format = "%-15s %-15s %-15s\n";

print sprintf($format,@headers);
for my $sresult(@result){
my @texte;
for my $head(@headers){
my ($line) = grep{$_ =~ /^$head/}@$sresult;
$line = " " unless $line;
my $text = (split /\s+/,$line,2)[1];
$text ||= " ";
push @texte,$text;
}
print sprintf($format,@texte);
}


Bekomme ich diese Ausgabe:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
C:\>perl mercedes.pl
$VAR1 = [
[
'BB 230E',
'DD 400l Kofferraum',
'EE 132PS/ ??KW'
],
[
'BB 500SL',
'DD 150l Kofferraum',
'EE 350 PS'
]
];
BB DD EE
230E 400l Kofferraum 132PS/ ??KW
500SL 150l Kofferraum 350 PS
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/
<< |< 1 2 3 >| >> 29 Einträge, 3 Seiten



View all threads created 2007-01-04 19:25.