每天分析日志的哥们实在伤不起,经常需要给出PV,UV,独立IP等一些统计值,使用C/C++,java都可以写,过程是这样的,先读取文件,逐行扫描,把能标记的值放入数据结构中,排重得出最终结果,其实Linux本身有很强大的文本处理功能,完全可以用shell + 一些文本小工具得出结果。
Nngix输出的access log文件如下:
192.168.1.166 - - 119272312 [05/Nov/2011:16:06:59 +0800] "GET /index.html HTTP/1.1" 200 370 "http://192.168.1.201/" "Chrome/15.0.874.106" "-"
192.168.1.166 - - 119272312 [05/Nov/2011:16:06:59 +0800] "GET /poweredby.png HTTP/1.1" 200 3034 "http://192.168.1.201/" "Chrome/15.0.874.106" "-"
192.168.1.177 - - 1007071650 [05/Nov/2011:16:06:59 +0800] "GET /favicon.ico HTTP/1.1" 404 3650 "-" "Chrome/15.0.874.106" "-"
192.168.1.178 - - 58565468 [05/Nov/2011:16:17:40 +0800] "GET / HTTP/1.1" 200 3700 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)" "-"
192.168.1.166 - - 119272312 [05/Nov/2011:16:17:40 +0800] "GET /nginx-logo.png HTTP/1.1" 200 370 "http://192.168.1.201/" "Chrome/15.0.874.106" "-"
PV很简单,大致就是统计某个URL的访问次数,例如统计/index.html的访问次数
grep "/index.html" /var/log/nginx/access.log –c
UV呢,我们根据用户标识(第四列) ,首先需要字符串截取,使用cut命令,以空格符号分割,-d “ ”,
再取第四列-f 4,然后这里需要排重,需要使用uniq工具,uniq速度很快,但是基于就近排重,前一个后一个一样会排重,之间间隔了不一样的,就不行了,这就必须使用sort工具来对标识符进行排序,排序后再使用uniq工具就可以达到目的,之间我们用管道符号链接, 最后再用 wc –l 输出统计数
比如我们统计访问了/index.html这也页面的uv:
grep "/index.html" /var/log/nginx/access.log | cut –d “ ” –f 4| sort | uniq | wc –l
独立IP:
假设我们要统计整站的独立IP,那么我们不需要使用
grep来匹配具体页面,只需要使用cat输出即可:
cat /var/log/nginx/access.log | cut –d “ ” –f 1 | sort| uniq | wc -l
都木有使用强大的awk,就完成了基本的统计需求:)
分享到:
相关推荐
### Shell统计PV和UV、独立IP的方法 在网站数据分析领域,PV(Page View,页面浏览量)、UV(Unique Visitor,独立访客数)以及独立IP的统计是非常重要的指标,它们可以帮助我们了解网站的流量情况及用户的活跃度。...
下面将详细介绍如何使用Android的Shell命令来设置静态IP。 首先,你需要获得设备的root权限,因为更改网络设置通常需要超级用户权限。如果你的设备已经root,可以继续以下步骤;如果没有,需要先获取root权限。 1....
### Shell脚本实现自动修改IP地址 #### 概述 在Linux系统中,为了提高运维效率,管理员常常需要编写Shell脚本来完成重复性任务。其中一个常见的需求是批量修改服务器的IP地址。通过编写一个简单的Shell脚本来自动...
shell 判断输入的ip是否和本机的ip同网段 包含两种实现方法
shell 统计 文本 行数 脚本 源码
#/usr/bin/env bash # Name: get_network_info.sh # Author: Purple_Grape # This is a script to gather network information of your Linux system. # Test under Ubuntu 10.04 ...IP=`LANG=C ifconfig $NIC | awk
当我们需要处理与网络相关的任务,如IP地址的转换时,Shell脚本能够提供方便且灵活的解决方案。IP地址通常有两种形式:点分十进制(例如192.168.1.1)和十进制整数(例如3232235777)。在某些情况下,我们可能需要在...
### Shell脚本学习:扫描局域网IP方法 在日常的网络管理与维护工作中,我们经常需要对局域网内的主机进行IP地址扫描,以了解当前网络中的活动节点。通过编写简单的Shell脚本来实现这一功能不仅可以提高工作效率,还...
shell脚本 ping所有网段ip 当局域网内,网络设备ip不知,可以用此脚本ping可以更改[ping指定网段ip 1s一个ip是否通畅
主要介绍了Shell脚本实现自动修改IP、主机名等功能分享,本文直接给出实现代码,需要的朋友可以参考下
shell脚本+提取IP(大批量文件中匹配)+匹配文件+去重+统计数据量 使用场景:起止时间内50天的数据,进行匹配查询,提取条件内的IP,与其他目录下的文件进行匹配,最后将匹配结果去重统计
Shell脚本统计C++ "*.h" "*.hpp" "*.hxx" "*.c" "*.cpp" "*.cxx" "*.cc"中的代码行数,默认会自动去掉注释、#include、空行、独占一行的大括号行 并且会按一级子目录统计汇总其子目录下面所有代码的行数
#Function: Auto set static IP for wlan/ethernet, which dynamically assigned from dhcp,and add default gateway #Param in: default gateway that can access internet, if not enter, this value will be *.*....
在IT系统管理中,批量获取主机信息...总结,通过编写shell脚本并结合Linux命令,我们可以高效地批量获取并整理主机信息,这对于系统监控、资源统计和故障排查都非常有帮助。在实际操作时,请根据具体环境进行适当调整。
ubuntu更改IP的shell代码,自己写的,比较拙,请指正
获取单个文件行数 文件:test1.sh 行数:20 方法一 代码如下: awk ‘{print NR}’ test1.sh|tail -n1 如图所示: 方法二 代码如下: awk ‘END{print NR}’ test1.sh ...grep -n “” test1.sh|awk -F: ‘{print ‘}|...
本文将深入探讨标题"shell_ip_orangewgz_linux_shell_shell编程_shell脚本_"所提及的利用Shell编写判断IP地址合法性的脚本这一主题。我们将围绕Linux Shell、Shell脚本、shell编程以及如何在orangewgz Linux发行版上...
### Shell脚本实现判断IP地址是否在一个IP段内的方法 #### 概述 在IT运维、网络安全以及自动化管理等场景中,经常需要判断一个IP地址是否位于特定的IP范围内。这种需求可以通过编写Shell脚本来实现自动化处理。...
B shell与 C shell的区别 B shell和C shell都是Linux操作系统中的shell类型,它们之间存在一些关键的区别。 首先,让我们从B shell开始。B shell,全称为Bourne shell,是UNIX最初使用的shell。它在每种UNIX上都...