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
Für eure Hilfe bedanke ich mich bereits im voraus!
mfG
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
Für eure Hilfe bedanke ich mich bereits im voraus!
mfG
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 75198
Url: https://administrator.de/forum/problem-mit-systemgrep-und-suche-75198.html
Ausgedruckt am: 12.04.2025 um 08:04 Uhr
4 Kommentare
Neuester Kommentar
Hy,
schau mal, ob das bei Dir so funktioniert, wie Du es brauchst:
Aufruf: scriptname.pl test.msg
Gruss, runlevel2
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
Hy nochmal,
das mußt Du dann klammern im regulären Ausdruck. Zugreifen kannst Du im Beispiel über die Variable $1:
Müßte passen.
Siehe auch: http://perl-seiten.homepage.t-online.de/html/perl_suche2.html#abs3
Gruss, runlevel2
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