`
cfyme
  • 浏览: 273563 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

统计push点击次数的shell脚本版本2

 
阅读更多

   在上一个版本 统计push点击次数的shell脚本中,有一个问题,就是没有进行去重,比如同一条push被用户点击了多次,点击次数都在加加,显然数量不准确,运营人员需要的是有多少个设备点击打开了push的次数。

   

   于是版本升级了下:

 

    关键代码如下:

    awk -F ","  '!a[$2,$3,$4,$5]++' $masterPath/push_feed_back_log.log.$date  |awk -F ","  '{a[$2" "$5]+=1}END{for(i in a) printf "%s %s\n",i,a[i]}' | sort -k 3 -n -r | head -n 15 >>/tmp/mymaster.txt

    说明:最关键的去重部分  '!a[$2,$3,$4,$5]++' 表示第2,3,4,5列不能重复,如果重复,就只算一条记录第一列是时间所有忽略。

    完整代码如下:

    

 #!/bin/sh 
 date=`date   -d   -1day +%Y-%m-%d`;
 masterPath=/home/www/logs/taofen8/master;
 apiPath=/home/www/logs/taofen8/api;
 path=/home/www/logs/taofen8;
 hisPath=/data/history/taofen8;
 log=$path/master/push_feed_back_log.log.$date 
 echo "==============start==================";
 if [ ! -f "$log" ]; then
   #判断文件是否存在
   masterPath=$hisPath/master;
   apiPath=$hisPath/api;
 fi
 echo "==============date$date===================" > /tmp/mymaster.txt;
 
 #!a[$2,$3,$4,$5]++  去重
 awk -F ","  '!a[$2,$3,$4,$5]++' $masterPath/push_feed_back_log.log.$date  |awk -F ","  '{a[$2" "$5]+=1}END{for(i in a) printf "%s %s\n",i,a[i]}' | sort -k 3 -n -r | head -n 15 >>/tmp/mymaster.txt
 
 echo "===============API==================" >> /tmp/mymaster.txt;
 
 awk -F ","  '!a[$2,$3,$4,$5]++' $apiPath/push_feed_back_log.log.$date  |awk -F ","  '{a[$2" "$5]+=1}END{for(i in a) printf "%s %s\n",i,a[i]}' | sort -k 3 -n -r | head -n 15 >>/tmp/mymaster.txt
 
 echo "=================end================" >> /tmp/mymaster.txt;

 

 

 

   这样就是统计不重复的点击记录。

 

分享到:
评论

相关推荐

    Git指令的Shell脚本

    Git指令的Shell脚本,能够快速便捷地管理Git库,包括添加修改、提交修改、显示库状态、推送到远程库、从远程库更新到本地、版本恢复等操作。 使用方法: 1. 在Linux系统中,将本文件放在Git库目录下,利用Shell运行...

    iOS 开发中用到的 shell 脚本.zip

    2. **自动化编译与打包**: Shell脚本可以用来自动化编译多个配置(如Debug和Release)或不同目标(如iPhone和iPad)的项目。例如,`xcodebuild`命令可以用于编译Xcode项目,通过指定不同的参数实现不同的构建目标。 ...

    Android 如何执行shell脚本.doc

    Android 如何执行 shell 脚本 Android 操作系统中执行 shell 脚本是一项基本的技术,今天我们将一步步指导您如何在 Android 中执行 shell 脚本。 新建 shell 文件 首先,我们需要新建一个 shell 文件,例如 `x.sh...

    Shell:批量导入文件到Android手机中

    构造几万张图片或者需要空间存储不足的场景,通过该脚本可以快速生成文件、并导入到手机中

    sh2bin:在android或linux系统平台上,将shell脚本打包到可执行文件bin

    2. **生成C++源代码**:使用sh2bin工具,将Shell脚本转换为C++源代码,与Linux上的步骤相同。 3. **编译C++源代码**:使用NDK的交叉编译功能,例如`ndk-build`命令,编译生成的C++源代码。 4. **运行可执行文件**...

    用于填充android分区的shell脚本

    用于填充android空间的脚本,效率很高,可以达到存储写入的理论值,emmc填充速度都可以达到240MB/S,确认是大M。 用法: adb push fillbigfile.sh /data/local/tmp adb shell sh /data/local/tmp/fillbigfile.sh /...

    android-shell-scripts:帮助与Android设备配合使用的Shell脚本

    在Android开发和管理中,利用Shell脚本可以极大地提高工作效率,尤其对于自动化任务和设备管理。"android-shell-scripts"是一个集合,它包含了多个用于与Android设备配合工作的Shell脚本,适用于Linux、OSX和Ubuntu...

    svn迁移到gitlab的shell批处理脚本

    根据提供的文件信息,我们可以得知这个Shell批处理脚本的目的是将数据从SVN(Subversion)版本控制系统迁移到GitLab。SVN和Git是两种流行的版本控制系统,它们用于管理源代码的变更。SVN是集中式版本控制系统,而Git...

    shell脚本一键同时推送代码至github和gitee的解决办法

    本篇文章将详细介绍如何通过Shell脚本实现一键同时推送代码至GitHub和Gitee。 首先,我们需要了解Git的基本操作。在描述中提到的第一步是初始化Git仓库,这是通过在项目目录中运行`git init`命令完成的。例如,在 `...

    Linux 编译c/c++ makefile 通用脚本 & shell 工具脚本

    3. 如上的IDE在Win上比较受欢迎,但是...我们可以建立一个shell脚本,比如命名为==s==,可以将一些复杂经常使用的命令写到==s==脚本中(比如,编译某某工程,pull code,push code等等),以便以后使用(./s -b xx)。

    shell-utils:shell脚本小工具

    在IT行业中,Shell脚本是一种极其重要的工具,特别是在系统管理和自动化任务执行方面。"shell-utils: shell脚本小工具"这个项目显然集成了几个实用的Shell脚本来帮助用户更高效地处理日常操作。以下是关于Shell脚本...

    ubuntu的右键shell脚本.zip

    给ubuntu下配置右键菜单的脚本,文件如下: ./apkInstall ./compare ./chmod777.sh ./set-as-Meld-left ./pushFileToSdcard ./compare-to-left

    git迁移脚本

    Git本身提供了丰富的命令来处理各种场景,而通过编写Shell脚本,我们可以将这些命令组合起来,形成一套完整的迁移流程。以下是一些关键的Git知识点和可能包含在迁移脚本中的步骤: 1. **克隆源仓库**:首先,使用`...

    webhook:git webhook,接受push回调,触发shell脚本

    默认配置如下key 后台设置的密码branch 需要监控的分支script scripts目录下的脚本文件名site gitee/github,不写则该条无效port http端口(不写默认6666)path post接口的路径(不写默认/post-receive){ "list": [{ ...

    ubuntu实用脚本

    Shell脚本是一种文本文件,包含了命令序列,可以在终端中执行,以完成一系列自动化任务。编写脚本时,我们需要了解变量、条件语句、循环、函数等基本元素,以及如何使用shebang(#!/bin/bash)指定解释器。 2. **...

    shell脚本从SVN推送到多台服务器的代码

    ### Shell脚本从SVN推送到多台服务器的知识点 #### 一、SVN简介与原理 Subversion(简称SVN)是一种集中式版本控制系统,它管理着随时间改变的数据。这些数据放置在一个中央仓库(repository)中。这个仓库很像一个...

    Android执行shell命令(转)

    可以创建一个包含多个命令的shell脚本(如:`script.sh`),然后通过`adb push`将脚本推送到设备上,再用`adb shell sh script.sh`执行脚本。 6. 源码级操作 对于开发者而言,有时需要在源码层面执行shell命令,...

    Github-Automation:此仓库通过Shell脚本处理了github上的自动化任务

    2. **自动化测试**:在Shell脚本中,可以集成单元测试框架(如JUnit、pytest),当有新的代码提交时,自动运行测试,确保代码质量。 3. **自动化构建**:使用`git clone`命令可以从GitHub仓库克隆代码,然后使用...

Global site tag (gtag.js) - Google Analytics