AWK获取字符串和引用字符串

时间:2013-07-25 03:36:24

标签: awk

我有一个包含此类内容的日志文件

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

由于

2 个答案:

答案 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