Frag einen IT-Experten
Frage stellen
Einsatz festlegen
Antwort erhalten
jetzt fragen!
Kategorie: Sonstige Frage an IT-Experten
Frage: Linux: awk / perl bashscript Verschachtelung
Einsatz: € 20,00
Bewertung: 5,0 (von 5 Sternen)

Folgende Zeile ist Ausgangsbasis:
1040465920-1040474111

Hierbei handelt es sich um einen IP-Adressen Range im Integerformat.

Es ist Möglich beispielsweise die erste IP-Adresse per Perl mit folgendem Script in das gewohnte Format zu wandeln.

echo 1040474111 | perl -ne 'print $_24 ,".",$_24,".",$_24,".",$_24'

Ausgabe ist dann: 62.4.64.0

Mit folgender Befehlszeile wird die erste und zweite Variable verfügbar gemacht:
echo 1040465920-1040474111 | awk -F "-" '{print $1," Testtrenner ",$2 }'

Mein Ziel ist es eine Datei mit vielen dieser Ausgangzeilen
("1040465920-1040474111") in die gewohnte Schreibweise übersetzen zu lassen.

Auftrag:
Das Verschachteln des awk und des Perl-Scripts sodaß aus einer:
"1040465920-1040474111" Zeile
eine
"62.4.64.0-62.4.95.255" Zeile wird.

Mit freundlichen Grüßen Chris

Haben Sie auch eine Frage?
Klicken Sie hier und fragen Sie einen IT-Experten zum Thema Sonstige Frage an IT-Experten!
Antwort

Beantwortet von Christoph Rust (Profil ansehen)

Hallo Chris!

Ich hoffe das folgende Script kann dein Problem lösen:

#!/usr/bin/perl

my $file = "liste.ip";

open(FILEHANDLE, "24,".",$parts[0]24,".",$parts[0]24,".",$parts[0]24,"\n";
print "IP2: ",$parts[1]24,".",$parts[1]24,".",$parts[1]24,".",$parts[1]24,"\n";
print "\n";
}

close(FILEHANDLE)

Viele Grüße,

Christoph

Nachfrage
Wow, das ging wirklich schnell, allerdings scheint es mir so, als würde da zumindest eine geschlossene runde, und eine geöffnete geschweifte Klammer fehlen.

Ich bin kein Perlprofi, aber woher weiß er das $file = FILEHANDLE ist.

Ich guck es mir jetzt mal in Ruhe an.

Vielen Dank!

Lieber Gruß
Chris

Rückantwort
Hi Chris!

Sorry, anscheinend hatte ich in der IDE ein falsches Encoding, hier nochmal:

#!/usr/bin/perl

my $file = "liste.ip";

open(FILEHANDLE, "24,".",$parts[0]24,".",$parts[0]24,".",$parts[0]24,"\n";
print "IP2: ",$parts[1]24,".",$parts[1]24,".",$parts[1]24,".",$parts[1]24,"\n";
print "\n";
}
close(FILEHANDLE)

Aber jetzt sollte es passen, wenn nicht, dann filtert tatsächlich das Portal bestimmte Sonderzeichen raus :(
Sollte dem so sein, musst Du mir mal deine Email schicken, aber vielleicht klappt es ja auch so.

Viele Grüße,

Christoph

Haben Sie auch eine Frage?
Klicken Sie hier und fragen Sie einen IT-Experten zum Thema Sonstige Frage an IT-Experten!
Bewertung
1. Wie hilfreich war die Antwort des IT-Experten?
5,0
2. Wie bewerten Sie die Reaktionszeit des IT-Experten?
5,0
3. Wie empfehlenswert ist der IT-Experte?
5,0