2017-04-11 133 views
-1

我從雷神之錘3服務器的下一個日誌信息提取多個信息從一條線

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 

我想在要提取的文件的IP地址和名稱這樣

192.168.10.22 ^3exc3ls!or_^87 
192.168.10.21 Moody_dog55 

IP號碼和名稱可以在任何品種。

這怎麼能用sed,awk或grep來完成?

回答

0

AWK方法:

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

輸出:

192.168.10.22 ^3exc3ls!or_^87 
192.168.10.21 Moody_dog55 

-F'\' - 考慮\作爲字段分隔

gsub(/:.*$/,"",$3); - 從IP地址刪除端口號


perl的方法:

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

很漂亮。非常感謝@RomanPerekhrest –

0

你只是sed刪除你不需要的東東,例如:

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

感謝您使用此解決方案@Kent –