Regulärer Ausdruck in Perl

Antworten
Nachricht
Autor
Felix Gertz

Regulärer Ausdruck in Perl

#1 Beitrag von Felix Gertz » 24. Aug 2000 21:21

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 Beitrag von Jochen » 25. Aug 2000 8:49

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.

Benutzeravatar
killerhippy
Beiträge: 529
Registriert: 19. Mai 2000 19:36
Kontaktdaten:

Re: Regulärer Ausdruck in Perl

#3 Beitrag von killerhippy » 27. Aug 2000 16:46

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 Beitrag von Felix » 28. Aug 2000 22:01

Ich danke euch beiden!

Felix

Antworten