2017-04-11 5 views
-1

ich die nächsten Protokollinfos von einem Quake 3 ServersExtract mehr Informationen aus einer Zeile

187:38 ClientUserinfo: 1 \ip\192.168.10.22:27960\challenge\-642334061\qport\26940\protocol\68\name\^3exc3ls!or_^87\rate\8000\sex\male\handicap\100\color2\5\color1\4\snaps\20\authc\0\cl_guid\K3F07049EDE8AAF58CC3A979846237D7 
390:06 ClientUserinfo: 14 \ip\192.168.10.21:27960\challenge\314934026\qport\62577\protocol\68\name\Moody_dog55\rate\16000\sex\male\handicap\100\color2\5\color1\4\snaps\20\authc\0\cl_guid\7FB6BDD1F08CCCC8CK3E9444930A35CD 

Ich möchte extrahieren Sie die IP und Namen wie diese in einer Datei

192.168.10.22 ^3exc3ls!or_^87 
192.168.10.21 Moody_dog55 

IP-Nummer habe und Name kann in irgendeiner Vielzahl sein.

Wie kann das mit sed, awk oder grep gemacht werden?

Antwort

0

awk Ansatz:

awk -F'\' '{gsub(/:.*$/,"",$3); print $3, $11}' file 

Der Ausgang:

192.168.10.22 ^3exc3ls!or_^87 
192.168.10.21 Moody_dog55 

-F'\' - Berücksichtigung \ als Feldseparator

gsub(/:.*$/,"",$3); - Entfernen Portnummer von IP-Adresse


perl Ansatz:

perl -nle 'print $1," ",$2 if /\\ip\\([^\\]+):.*?\\name\\([^\\]+)/' file 
+0

Das ist schön. Vielen Dank @RomanPerekhrest –

0

Sie entfernen Sie einfach das Material, das Sie zum Beispiel nicht benötigen, mit sed:

sed 's/.*ip\\//;s/:.*\\name\\/ /;s/\\.*//' file 
192.168.10.22 ^3exc3ls!or_^87 
192.168.10.21 Moody_dog55 
+0

Vielen Dank für diese Lösung @Kent –

Verwandte Themen