设为首页 收藏本站
查看: 1590|回复: 0

数据需求统计常用shell命令---AWK分组求和,分组统计次数

[复制链接]

尚未签到

发表于 2015-12-15 14:29:19 | 显示全部楼层 |阅读模式
1、将时间转换为时间戳
select unix_timestamp('2009-10-26 10-06-07')
如果参数为空,则处理为当前时间

2、将时间戳转换为时间
select from_unixtime(1256540102)
有些应用生成的时间戳是比这个多出三位,是毫秒表示,如果要转换,需要先将最后三位去掉(标准的10位数字,如果是13位的话可以以除以1000的方式),否则返回NULL



1.将IP地址转化为数字
select inet_aton('210.30.0.103');

2.将数字转化为IP地址
select inet_ntoa(3525181543);



随机取用户
cat  file1 | awk '{ print rand(),$1 }' |sort -k1 |awk '{ print $2 }' |head -4000

分组求和

awk '{s[$1] += $2}END{ for(i in s){  print i, s } }' file1 > file2
  以第一列 为变量名  第一列为变量,将相同第一列的第二列数据进行累加   打印出和
DSC0000.jpg

awk '{s[$1" "$2] += $3}END{ for(i in s){  print i, s } }'  file1 > file2
  以第一列和第二列为变量名, 将相同第一列、第二列的第三列数据进行累加   打印出和
DSC0001.jpg

  awk '{s[$1] += $2; a[$1] += $3 }END{ for(i in s){  print i,s,a } }'  haha.txt
  如果第一列相同,则根据第一列来分组,分别打印第二列和第三列的和
DSC0002.jpg

匹配
1、匹配交集项
  awk 'NR==FNR{a[$1]=1}NR>FNR&&a[$1]>0{print $0}'  file1(字段:QQ) file2(字段:QQ 点券值 ) > file3
  如果file1、file2中,2个文件的第一列值相同,输出第2个文件的所有列
注意:数据量如果达到4Gb以上或者行数达到一亿级别,建议将file2进行split分割,否则就算是32G的内存的机器都会被吃掉;
DSC0003.jpg

awk 'NR==FNR{a[$1" "$2]=1}NR>FNR&&a[$1" "$2]>0{print $0}'  file1 file2> file3
  如果file1、file2中,2个文件的第一列第二列值相同,输出第2个文件的所有列
DSC0004.png

2、匹配非交集项
awk 'NR==FNR{a[$1]=1}NR>FNR&&a[$1]$2?max[$1]:$2}END{for(i in max)print i,max}'  file
第一列不变,取第二列分组最大值

awk '{if(!min[$1])min[$1]=20121231235959;min[$1]=min[$1]max) max=$1 fi} END {print "Max=", max}' file2
awk 'BEGIN {min = 1999999} {if ($1 "$a"_"$b"_result.log
done
注意点:awk使用函数时,使用'"$a"'(先单引号,后双引号)

集合类

1、集合交
cat fileA fileB |sort |uniq –d > result.log
2、集合差
cat fileA fileB     |sort |uniq -d   > jiaoji.txt
cat fileA jiaoji.txt  |sort |uniq -u   > result.log
3、集合全集去重
cat fileA fileB |sort  -u > result.log
3、集合全集不去重
cat fileA fileB |sort     > result.log

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-151618-1-1.html 上篇帖子: 一个数值统计的shell 下篇帖子: 常用的shell脚本
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表