Board logo

标题: [文件操作] IISlog用BAT进行统计分析 [打印本页]

作者: fred_phl    时间: 2014-3-18 17:12     标题: IISlog用BAT进行统计分析

向大神们求助:
1.现在想取上面iislog文件中的IP地址,且去重,请用批处理实现?
思路:先去掉前三行,然后根据空格进行分列,取IP字段,然后再去重,最后统计行数

2
文件夹名:IISLOG
下面有好多log文件
格式如下:
u_ex140316.log
u_ex140317.log
u_ex140318.log
等等
现在需要写一个批处理,统计下面的信息
最后想在CountResult.txt中看到如下结果:

u_ex140316.log  总行数:9000行,不同的IP个数:8000
u_ex140317.log  总行数:8870行,不同的IP个数:8400
u_ex140318.log  总行数:7720行,不同的IP个数:8500
u_ex140319.log

思路:
1取系统日期年月日与u_ex120316的(5-10位)进行匹配,发现相等,
就统计该文件的这二个信息(总行数与不同的IP数),并写入到(追加)CrountResult.txt中
2.注:总行数=总行数-4(前面四行不参与统计)
作者: Batcher    时间: 2014-3-18 20:11

#Software: Microsoft Internet Information Services 7.5
#Version: 1.0
#Date: 2014-03-17 01:41:35
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken
2014-03-17 01:41:35 114.141.132.110 POST /sjservice.aspx - 80 - 117.136.8.59 Dalvik/1.6.0+(Linux;+U;+Android+4.2.2;+R821T+Build/JDQ39) 200 0 0 469 321 1029
2014-03-17 01:41:35 114.141.132.110 POST /sjservice.aspx - 80 - 117.136.8.59 Dalvik/1.6.0+(Linux;+U;+Android+4.2.2;+R821T+Build/JDQ39) 200 0 0 469 300 1981
2014-03-17 01:41:35 114.141.132.110 POST /sjservice.aspx - 80 - 211.136.115.24 Dalvik/1.6.0+(Linux;+U;+Android+4.2.2;+R821T+Build/JDQ39) 200 0 0 278 393 15
2014-03-17 01:41:37 114.141.132.110 POST /sjservice.aspx - 80 - 122.85.51.18 Dalvik/1.6.0+(Linux;+U;+Android+4.1.1;+MI+2SC+MIUI/JLB29.0) 200 0 0 469 301 202
2014-03-17 01:41:39 114.141.132.110 POST /sjservice.aspx - 80 - 117.136.8.57 Dalvik/1.6.0+(Linux;+U;+Android+4.0.3;+Lenovo+A658t+Build/S-3-10) 200 0 0 469 308 265
2014-03-17 01:41:45 114.141.132.110 POST /sjservice.aspx - 80 - 211.136.115.24 Dalvik/1.6.0+(Linux;+U;+Android+4.2.2;+R821T+Build/JDQ39) 200 0 0 278 392 15
2014-03-17 01:41:52 114.141.132.110 POST /sjservice.aspx - 80 - 117.136.8.59 Dalvik/1.6.0+(Linux;+U;+Android+4.2.2;+R821T+Build/JDQ39) 200 0 0 469 321 499
2014-03-17 01:42:00 114.141.132.110 POST /sjservice.aspx - 80 - 117.136.8.99 Dalvik/1.6.0+(Linux;+U;+Android+4.2.2;+GT-I9152+Build/JDQ39) 200 0 0 469 303 2090
2014-03-17 01:42:00 114.141.132.110 POST /sjservice.aspx - 80 - 211.136.115.24 Dalvik/1.6.0+(Linux;+U;+Android+4.2.2;+R821T+Build/JDQ39) 200 0 0 278 393 499
2014-03-17 01:42:00 114.141.132.110 POST /sjservice.aspx - 80 - 114.132.243.73 Dalvik/1.4.0+(Linux;+U;+Android+2.3.5;+ZTE+U791+Build/MocorDroid2.3.5) 200 0 0 469 313 811
2014-03-17 01:42:09 114.141.132.110 POST /sjservice.aspx - 80 - 211.140.18.122 Dalvik/1.6.0+(Linux;+U;+Android+4.0.3;+HTC+A320e+Build/IML74K) 200 0 0 473 355 140
2014-03-17 01:42:14 114.141.132.110 POST /sjservice.aspx - 80 - 140.207.223.187 Dalvik/1.6.0+(Linux;+U;+Android+4.2.1;+Coolpad8295M+Build/JOP40D) 200 0 0 469 308 46
2014-03-17 01:42:14 114.141.132.110 POST /sjservice.aspx - 80 - 117.136.8.98 Dalvik/1.6.0+(Linux;+U;+Android+4.2.2;+HUAWEI+G750-T00+Build/HuaweiG750-T00) 200 0 0 469 340 296
2014-03-17 01:42:15 114.141.132.110 POST /sjservice.aspx - 80 - 117.136.8.66 Dalvik/1.6.0+(Linux;+U;+Android+4.2.2;+SM-G3818+Build/JDQ39) 200 0 0 469 303 624

日志是这样的不?
是不是应该去掉前四行呢?你怎么说前三行呀
作者: Batcher    时间: 2014-3-18 20:23

  1. @echo off
  2. (for %%i in (*.log) do (
  3.     gawk "!/^#/{a[$9]}END{print \"%%i 总行数:\" NR-4 \"行,不同的IP个数:\" length(a)}" "%%i"
  4. ))>CrountResult.txt
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2