Page 1 of 1

Regulärer Ausdruck in Perl

Posted: 24. Aug 2000 21:21
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

Re: Regulärer Ausdruck in Perl

Posted: 25. Aug 2000 8:49
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.

Re: Regulärer Ausdruck in Perl

Posted: 27. Aug 2000 16:46
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

Re: Regulärer Ausdruck in Perl

Posted: 28. Aug 2000 22:01
by Felix
Ich danke euch beiden!

Felix