是否有免费的解决方案来计算 apache 文件中上下文根的数量?

是否有免费的解决方案来计算 apache 文件中上下文根的数量?

我有一个 apache 日志文件。我需要报告有多少行(请求)来自特定上下文根。apache 日志已经以斜杠开头,上下文根位于第二个斜杠处。

Apache 日志示例:

11.222.33.44 - - [14/Feb/2013:00:27:33 -0600] "GET /lifecontent/monitor?test=siteseer&format=siteseer HTTP/1.1" 200 275 "-" "Mozilla/4.0 (compatible; MSIE 4.01; Windows NT)" "SSL=on"
111.22.333.44 - - [14/Feb/2013:00:29:29 -0600] "GET /lc/Brokerage%20Manager/IDG%20Licensing%20and%20Appointment%20Process/IDG%20Franchise%20Reference%20Manual HTTP/1.1" 302 - "-" "(Windows NT)" "SSL=-"

两个上下文根将是“/生活内容/”“/lc”

不确定哪种工具最好?我更喜欢 GUI 或批处理解决方案。

我主要只是想弄清楚每个上下文根在 apache 文件中的使用百分比。 (理想情况下,它可以一次搜索多个文件,但这不是必需的。)

答案1

你可以用一个简单的 shell 脚本来完成此操作:

cut -d/ -f4 access.log | sort | uniq -c | sort -g

cut命令提取第 5 个 / 分隔的字段(即“上下文根”),sort | uniq -c然后计算每个出现的次数,并按sort -g出现次数排序。

在我的网络服务器上运行此命令可得到:

   5477 misc
  11130 bzr
  32181 raspbian
  35912 files
  43020 sites

答案2

我接受了 mgorven 的解决方案,因为它为我指明了最终可行的解决方案的正确方向。使用他的解决方案后,有时会出现查询字符串值,有时上下文根没有结尾斜杠。因此“/lc/”和“/lc”以及“/lc?x=y”被算作“lc”。所以我最终使用了这个解决方案:

cut -d" " -f7 access.log | cut -d? -f1 | cut -d/ -f2 | sort | uniq -c | sort -g

如果仅访问了“/”,则将显示已访问的单个文件和空行。

我也使用 UnxUtils.zip 在 Windows 上执行了此操作: http://sourceforge.net/projects/unxutils。我需要提取的内容只是剪切、排序、uniq。

谢谢 mgorven!!

相关内容