我有一个包含此类内容的日志文件
Mar 19 07:00:32 192.168.100.58 DefensePro: 21-11-2010 09:31:18 WARNING 150 HttpFlood "HTTP Page Flood Attack" TCP 0.0.0.0 0 192.168.100.6 0 0 Regular "File Server" term 0 0 N/A 0 N/A medium forward XXXXXXXX-XXXX-XXXX-18CE-2222B3148BBC
如何获得特定字符串(使用awk或nawk),如下所示:
Mar 19 07:00:32,192.168.100.58,HTTP Page Flood Attack,192.168.100.6,medium
由于
答案 0 :(得分:0)
你可以试试这个
awk '{j = 0;for(i=1;i<NF;i++){if(i == 11 && index($i,"\"") > 0){printf(",%s",$i);i++;while(index($i,"\"") == 0){printf(" %s",$i);i++;}printf(" %s",$i);j=i;}else if(i < 5 || i == (j+4) || i == (NF - 2)){printf(",%s",$i);}}}'
逻辑是我打印字段直到5和字段11,其中“开始我打印字段直到下一个”来。我存储了最后的位置“作为j。然后我打印字段j + 4和最后但第二个字段
答案 1 :(得分:0)
$ awk -F\" '{
split($1,a,/ /)
split($3,b,/ /)
split($5,c,/ /)
printf "%s %s %s,%s,%s,%s,%s\n",a[1],a[2],a[3],a[4],$2,b[5],c[8]
}' file
Mar 19 07:00:32,192.168.100.58,HTTP Page Flood Attack,192.168.100.6,medium