Regulärer Ausdruck in Perl

Post Reply
Message
Author
Felix Gertz

Regulärer Ausdruck in Perl

#1 Post by Felix Gertz »

Tach!

Ich habe diese Zeile hier:

Aug 16 13:10:18 fgs kernel: isdn_tty: call from 4345023984 -> 341453 ignored

Nun möchte ich gerne dir Nummer 4345023984 herrausbekommen.

Man müsste ja eigentlich nur alles vor "from" wegschnipseln und alles hinter "->".
Und dann nochmal "from" und "->" selber.

Aber wie macht man das?

Hat einer ne Idee?

Wäre sehr dankbar.

Grüsse

Felix

Jochen

Re: Regulärer Ausdruck in Perl

#2 Post by Jochen »

Easy, allerdings weiss ich's nur in sed oder awk, perl kann ich (noch?) nicht. In sed wäre es<pre>sed -n '/isdn_tty: call from/s/.*from \([0-9][0-9]*\) ->.*/\1/p' </pre>, die Eingabezeile würde sed kann von stdin lesen. Mit "/isdn_tty: call from/" werden nur Eingabezeilen bearbeitet, die auch passen. "s" steht für "substitute", also Suchen und Ersetzen. "/.*from \([0-9][0-9]*\) ->.*/" ersetzt die ganze Zeile, und zwar durch "\1", nämlich die Zeichenkette, die im RE durch \(...\) eingeklammert war (die Nummer). "/p" beendet das Kommando und gibt an, dass diese Zeile (in der bearbeiteten Form) auszugeben ist. Das muss angegeben werden, weil vorher durch die Option -n beim Aufruf die Default-Ausgabe aller Zeilen unterdrückt wurde.

Ich hoffe, der RA ist Dir klar. Der sollte sich nämlich problemlos nach perl "portieren" lassen. Vielleicht kann Dir da ja auch ein perlmeister hier helfen.

User avatar
killerhippy
Posts: 529
Joined: 19. May 2000 19:36
Contact:

Re: Regulärer Ausdruck in Perl

#3 Post by killerhippy »

schnulliscript:

---cut-here---
#! /usr/bin/perl -w

########################
# Variablenvereinbarung#
########################

my $ng;
my $eg;

#########################
# Definition des Strings#
#########################

$ng="Aug 16 13:10:18 fgs kernel: isdn_tty: call from 4345023984 -> 341453 ignored";

##########################################
# Die Telefonnummer treffen und speichern#
##########################################

################################
# [] definiert eine Klasse #
# \d trifft digits, d.h. Zahlen#
# + mindestens einmal treffen #
# () Treffer merken #
################################
$ng =~ /call from ([\d]+)/;


##################################################
# die gespeicherte Nummer einer Variable zuweisen#
##################################################

$eg = $1;

print "$eg
";

exit;
---cut-ends---

cu
Sascha
Es gibt keine dumme Fragen!

Killerhippy

Felix

Re: Regulärer Ausdruck in Perl

#4 Post by Felix »

Ich danke euch beiden!

Felix

Post Reply