在上一个版本 统计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库,包括添加修改、提交修改、显示库状态、推送到远程库、从远程库更新到本地、版本恢复等操作。 使用方法: 1. 在Linux系统中,将本文件放在Git库目录下,利用Shell运行...
给ubuntu下配置右键菜单的脚本,文件如下: ./apkInstall ./compare ./chmod777.sh ./set-as-Meld-left ./pushFileToSdcard ./compare-to-left
构造几万张图片或者需要空间存储不足的场景,通过该脚本可以快速生成文件、并导入到手机中
用于填充android空间的脚本,效率很高,可以达到存储写入的理论值,emmc填充速度都可以达到240MB/S,确认是大M。 用法: adb push fillbigfile.sh /data/local/tmp adb shell sh /data/local/tmp/fillbigfile.sh /...
默认配置如下key 后台设置的密码branch 需要监控的分支script scripts目录下的脚本文件名site gitee/github,不写则该条无效port http端口(不写默认6666)path post接口的路径(不写默认/post-receive){ "list": [{ ...
Pushover Bash脚本一个Bash shell脚本,用于发送推送通知。 必须有一个才能使用此脚本。 在文件中可以找到以某种方式添加到此脚本的其他出色编码人员的贡献和评论。用法 usage: pushover.sh <apikey> <userkey> ...
TangoMan Provisions是使用普通Shell脚本快速便捷地配置计算机的方法。 :laptop: 依存关系 TangoMan Provisions需要以下依赖项: 吉特 :bookmark: 吉特 :penguin: 安装git(Linux) $ sudo apt-get install --...
该脚本将为 www-data 提供一个 bash shell,以便您可以开展业务,然后它将立即关闭它。 它甚至会修复您在 /var/ 所有权限。 # $ git clone git@github.com:joeguilmette/lockdown.git ~/lockdown脚本$ git clone ...
如果我有一个每天晚上或每周运行的cron或launchd作业,并且我想知道它是否成功,我可以在exit之前将其添加到脚本底部: po.sh "$0 exited successfully"这样,每次我想编写使用 Pushover 发送消息的 shell 脚本时,...
使用apk调用自动化测试jar脚本的命令,实现自动化测试apk。...自动化测试执行脚本的命令:adb push XXX.jar /data/local/tmp/ adb shell uiautomator runtest UiAutomator.jar --nohup -c com.test.test
卷曲推 将应用程序推送到 Cloud Foundry 的 Curl 脚本 要求 此脚本使用 json 解析器,在调用此脚本之前,必须在 $PATH 上安装该解析器并使其可用。 jq 可用于所有主要操作系统。...通过./curl-push.sh调用脚本
懒推 Bash脚本自动拉/推git仓库 该脚本为您执行拉/推例程。 对于那些忘记的人。 只是搅动它一个间隔,然后让它工作。 使用方法: 将“ LazyScript.sh”复制到您的存储库中... 您还可以更改默认的“ Lazy Push”消息
代码如下:SRCDIR=/letv/data/...for i in ${IP_LIST[*]}do echo -e “\n\nPUSH == $i == \n” /usr/bin/rsync -vzrtopg –progress –delete-after $SRCDIR –exclude=”.svn” rsync://
git-auto-push 用于自动推送由工具生成的文件的脚本所需工具须藤apt-get install inotify-tools ssh-没有它,您每次都需要输入密码用法-w " /abs/path/to/file-to-watch " -s " /abs/path/to/repo " -d " relative-...
开发push代码到gitlab,触发jenkins自动pull代码,通过maven编译、打包,然后通过执行shell脚本使docker构建镜像并push到私服(或者阿里云)仓库,此操作完成后jenkins服务器上再执行SSH命令登录到部署服务器,...
adb shell push getCpu.sh /storage/emulated/0/ 2. chmod +x getCpu.sh 赋予执行权限 3. sh getCpu.sh <packagename> 会在/storage/emulated/0/下生成getCpu文件,文件内容是packagename每秒CPU使用率。ls 4. 等到...
厌倦了用于在Web服务器上管理GIT的复杂shell脚本? 该工具在每个方向上只有一个按钮。 就这样! EasyGitDeploy针对以下设置:您正在使用git和远程存储库(例如GitHub或BitBucket)进行开发。 为了处理较小项目的...
这个脚本是非常基本的,它只是执行一个推送。 为了使其正常工作,我们必须使用任务计划程序。 就我而言,我已经使用crontab在笔记本电脑上每小时运行一次。 为此,您必须执行以下步骤: 打开一个终端并输入以下命令...
一个bash脚本,通过Apple push Notification service (APNs)发送iOS推送通知- tsif/pu.sh-源码