Schrift
[thread]11488[/thread]

best. Feld speichern (wie z.B. bei awk)

Leser: 1


<< |< 1 2 3 >| >> 28 Einträge, 3 Seiten
Duff
 2008-03-19 11:53
#107231 #107231
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Hallo,

ich möchte bestimmte Informationen aus einem Logfile sammeln.
Habe das logfile mit open geöffnet und in einer while-Schleife will ich nach bestimmten Werten suchen usw.

Um die while-Schleife zu durchlaufen, möchte ich anhand eines Identifiers immer bestimmte Sachen einzeln prüfen.

In der Shell würde ich den Identifier so ermitteln:
Code: (dl )
awk -F"|" '{print $4}' file


Wie kann ich sowas auf ähnliche Weise und vorallem so leicht in perl realisieren???

Danke.
D'OH
Daniel
pq
 2008-03-19 11:57
#107232 #107232
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
Code (perl): (dl )
my @fields = split /\|/, $line;
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
Duff
 2008-03-19 11:59
#107234 #107234
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Habe ich auch schon überlegt, aber die Zeilen sind teilweise sehr, sehr lang.

Ist es dann nicht ein wenig zu aufwendig, alle Daten in einem array zu speichern?
D'OH
Daniel
renee
 2008-03-19 12:08
#107235 #107235
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
C:\>perl -ane "print +(split /\|/,$_)[3],qq~\n~" beispiel.txt
4
test
im


beispiel.txt:
Code: (dl )
1
2
3
1|2|3|4|5|6
dies|ist|ein|test|noch
ein|wort|mit|im|satz
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
 2008-03-19 12:16
#107236 #107236
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Als ausführlicheres Skript:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/perl

use strict;
use warnings;
use Getopt::Long;

GetOptions(
  '-F=s' => \my $delim,
  '-i=n' => \my $index,
);

$delim = " " unless defined $delim;
$index = 1   unless defined $index;

@ARGV = ($ARGV[-1]);

while( <> ){
    chomp;
    print +(split /\Q$delim\E/,$_ )[$index-1],"\n";
}


Aufruf:
Code: (dl )
test.pl -F "|" -i 4 beispiel.txt
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/
pq
 2008-03-19 12:27
#107237 #107237
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
Duff+2008-03-19 10:59:05--
Habe ich auch schon überlegt, aber die Zeilen sind teilweise sehr, sehr lang.

Ist es dann nicht ein wenig zu aufwendig, alle Daten in einem array zu speichern?

es war eigentlich als ansatz gedacht, damit du damit weiterarbeiten kannst. split erlaubt
auch, dass man nur einzelne felder speichert.
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
Gast Gast
 2008-03-19 13:07
#107239 #107239
renee+2008-03-19 11:08:16--
Code: (dl )
C:\>perl -ane "print +(split /\|/,$_)[3],qq~\n~" beispiel.txt


Kann mir jemand diesen Teil erklären:
Code: (dl )
,qq~\n~"
nepos
 2008-03-19 13:11
#107240 #107240
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Das entspricht "\n", wobei die Anführungszeichen in der Shell wieder extra behandelt werden müssten und das hat renee sich halt gespart ;)
renee
 2008-03-19 13:15
#107241 #107241
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Siehe auch bei perlop den Abschnitt "Quote-and-Quote-like-Operators"...
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/
Duff
 2008-03-19 13:18
#107242 #107242
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Wow, danke an alle und besonders an renee für das aufschlußreiche Beispiel!
D'OH
Daniel
<< |< 1 2 3 >| >> 28 Einträge, 3 Seiten



View all threads created 2008-03-19 11:53.