Inhalt beim zweiten Vorkommen ausgeben

Inhalt beim zweiten Vorkommen ausgeben

Ich habe eine Protokolldatei, die folgende Ausgabe erzeugt:

[+] [1.1.1.1] LOG HERE

Ich möchte wissen, wie ich die IP aus dem Protokoll extrahieren kann, um sie an eine „saubere“ Datei zu senden, in der nur die IP aufgelistet ist.

Antwort1

Mit awk, getestet auf GNU Awk 4.1.3, nicht sicher, ob es mit anderen Versionen nicht funktioniert

$ cat ip.txt 
[+] [1.1.1.1] LOG HERE

$ awk -F'[][]' '{print $4}' ip.txt 
1.1.1.1
  • -F'[][]'Setzen Sie den Eingabefeldtrenner auf [oder]
  • {print $4}drucke das 4. Feld


Mit sed, vorausgesetzt, die Eingabedatei hat ein konsistentes Muster wie im Beispiel gezeigt

$ sed 's/.*\[//; s/].*//' ip.txt 
1.1.1.1
  • s/.*\[//vom Zeilenanfang bis zum Zeilenende [löschen
  • s/].*//Löschen Sie aus der so geänderten Zeile alles von der ersten ]bis zur letzten Zeile .

verwandte Informationen