samsx87
Goto Top

Problem mit system(grep) und suche

Hallo Zusammen

Ich habe folgendes Problem:

Ich möchte einen Dateinamen beim Aufruf eines Perl Scriptes an das script übergeben:

perl scriptname.pl test.msg

Danach sollte das Script die angebene Datei mittels grep durchsuchen:

system("grep Received:",$ARGV," > test.txt");

Das Problem ist nun, dass er zwar die Datei test.txt erstellt, diese aber leer lässt. Wenn ich den Befehl von Hand ausführe Funktioniert es (grep Received: test.msg > test.txt). Wo liegt der Fehler?

Mein zweites Problem ist, dass ich einen string nach einer IP-Addresse durchsuchen und diese dann als Variable abspeichern möchte:

Beispiel:
$test = "Received: from 12.123.234.2 (HELO host.name.com)"

if ($test =~ m/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/) {
$ipaddress = $_;
}

Das funktioniert jedoch nicht wirklich face-sad

Für eure Hilfe bedanke ich mich bereits im voraus!

mfG

Content-Key: 75198

Url: https://administrator.de/contentid/75198

Printed on: April 24, 2024 at 17:04 o'clock

Member: runlevel2
runlevel2 Dec 04, 2007 at 18:23:35 (UTC)
Goto Top
Hy,

schau mal, ob das bei Dir so funktioniert, wie Du es brauchst:

#!/usr/bin/perl -w

system "grep Received: $ARGV > test.txt";  

$test = "Received: from 12.123.234.2 (HELO host.name.com)";  

if ($test =~ m/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/) {
   my $ipaddress = $test;
   print "$ipaddress\n";  
}

Aufruf: scriptname.pl test.msg

Gruss, runlevel2
Member: samsx87
samsx87 Dec 04, 2007 at 19:04:41 (UTC)
Goto Top
Hallo!

Danke für Deine Antwort!

system "grep Received: $ARGV > test.txt"; <- Funktioniert! Vielen Dank!

Der Zweite Teil klappt jedoch nicht. Er gibt mir "Received: from 12.123.234.2 (HELO host.name.com)" zurück anstatt nur die IP-Adresse. Hast du noch eine andere Idee?


mfG
Member: runlevel2
runlevel2 Dec 05, 2007 at 08:11:46 (UTC)
Goto Top
Hy nochmal,

das mußt Du dann klammern im regulären Ausdruck. Zugreifen kannst Du im Beispiel über die Variable $1:

if ($test =~ m/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/) {
        my $ipaddress = $1;
        print "$ipaddress\n";  
}

Müßte passen.

Siehe auch: http://perl-seiten.homepage.t-online.de/html/perl_suche2.html#abs3


Gruss, runlevel2
Member: samsx87
samsx87 Dec 05, 2007 at 13:55:43 (UTC)
Goto Top
aaaaaaa Danke vielmals! Funktioniert!

mfG