Einzelne Zeichen (Strings) löschen mit AWK

Hi liebe Experten,

ich hab ein kleines Problem. Sicherlich für Euch klein für mich nicht lösbar. Also ich habe eine Datei die sieht so aus:

[80.100.102.223]
[80.100.102.223]
[80.100.102.223]
[80.100.102.223]
[80.100.102.223]
usw.
natürlich immer andere IPs. Diese Liste habe ich mir aus einem Logfile mit Hilfe von grep und awk generiert. Aber nun mein Problem:

  1. Ich will die Klammern vor und nach den IPs entfernen. Wie ist dazu die richtige Syntax? Ich bekomme immer, was ich auch schon probiert habe eine Fehlermeldung… Parse Error.

  2. Und dann die noch schwerere Aufgabe: Ich möchte dann irgendwie jede IP automatisch nacheinander mit dem Befehl host abfragen, wer dahinter steckt und dieses Ergebniss in eine Datei schreiben.

Hat da jemand eine Idee von euch??? Wäre echt super toll… Ich bin schon am verzweifeln, weil ich nicht mehr weiter komme.

Gruß
Tom

Hi Tom,
ich vermute mal, dass du UNIX und irgendeine taugliche Shell (ksh / bash) verwendest. Also dann:

for ip in $(sed 's/.\*\[\([^]]\*\)\].\*/\1/] ' indatei)
do
 host $ip
done \> resultdatei

Mit anderen Worten: benutze sed, um den Teil jeder Zeile der Datei ‚indatei‘, der in eckigen Klammern steht, zu extrahieren (=beliebige Folge von ‚Nicht-]‘). Das Ergebnis füttere an die for-Schleife (Shell-Konstrukt $() = Backquotes), führe host mit der Schleifenvariablen $ip aus und schreibe alles, was die for Schleife liefert in die Datei ‚resultdatei‘.

Ungetestet, sollte aber tun.

gruss
bernhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]