数据需求统计常用awk命令
原文:http://www.5iops.com/html/2013/script_0418/267.html
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[i] } }' file1 > file2
以第一列 为变量名 第一列为变量,将相同第一列的第二列数据进行累加 打印出和
awk '{s[$1" "$2] += $3}END{ for(i in s){ print i, s[i] } }' file1 > file2
以第一列和第二列为变量名, 将相同第一列、第二列的第三列数据进行累加 打印出和
awk '{s[$1] += $2; a[$1] += $3 }END{ for(i in s){ print i,s[i],a[i] } }' haha.txt
如果第一列相同,则根据第一列来分组,分别打印第二列和第三列的和
匹配
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的内存的机器都会被吃掉;
awk 'NR==FNR{a[$1" "$2]=1}NR>FNR&&a[$1" "$2]>0{print $0}' file1 file2> file3
如果file1、file2中,2个文件的第一列第二列值相同,输出第2个文件的所有列
2、匹配非交集项
awk 'NR==FNR{a[$1]=1}NR>FNR&&a[$1]<1 {print $0}' file1 file2 > file3
针对2个文件的第一列做比较,输出:在file2中去除file1中第一列出现过的行
第二种方法:
cat file1 file2|sort |uniq -d > jiaoji.txt
cat file2 jiaoji.txt |sort |uniq -u > file3
取最大值、最小值
1、针对(2列的文件)
awk '{max[$1]=max[$1]>$2?max[$1]:$2}END{for(i in max)print i,max[i]}' file
第一列不变,取第二列分组最大值
awk '{if(!min[$1])min[$1]=20121231235959;min[$1]=min[$1]<$2?min[$1]:$2}END{for(i in min)print i,min[i]}' file
第一列不变,取第二列分组最小值
2、针对单列的文件
awk 'BEGIN {max = 0} {if ($1>max) max=$1 fi} END {print "Max=", max}' file2
awk 'BEGIN {min = 1999999} {if ($1<min) min=$1 fi} END {print "Min=", min}' file2
求和、求平均值、求标准偏差
求和
cat data|awk '{sum+=$1} END {print "Sum = ", sum}'
求平均
cat data|awk '{sum+=$1} END {print "Average = ", sum/NR}'
求标准偏差
cat $FILE | awk -v ave=$ave '{sum+=($1-ave)^2}END{print sqrt(sum/(NR-1))}'
整合行和列
1、列换成行
如果第一列相同,将所有的第二列 第三列 都放到一行里面
awk '{qq[$1]=qq[$1](" "$2" "$3)}END{for(i in qq)print i,qq[i]}'
2、合并文件
2个文件,每个2列,将他们按照第一列相同的数,来合并成一个三列的文件,同时,将每个文件中针对第一列对应第二列中没有的数补0
awk 'FNR==NR{a[$1]=$2}FNR<NR{a[$1]?a[$1]=a[$1]" "$2:a[$1]=a[$1]" 0 "$2}END{for(i in a)print i,a[i]}' file1 file2 > file3
注意点:文件2 一定要比文件1 的行数小
3、2个文件,每个3列,将他们按照第一列、第二列相同的数,来合并成一个4列的文件,同时,将每个文件中针对第一列、第二列对应第3列中没有的数补0
awk 'FNR==NR{a[$1" "$2]=$3}FNR<NR{a[$1" "$2]?a[$1" "$2]=a[$1" "$2]" "$3:a[$1" "$2]=a[$1" "$2]" 0 "$3}END{for(i in a)print i,a[i]}' file
4、将列换成行,遇到空行,另起下一行
awk 'begin {RS=""} {print $1,$2,$3} file1
5、某列数字范围筛选
cat canshu |while read a b
do
awk '{ if ($2>'"$a"' && $2<='"$b"' ) print $1}' result.txt > "$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
PgQp2mQWS
数据需求统计常用awk命令的更多相关文章
- Hadoop集群-HDFS集群中大数据运维常用的命令总结
Hadoop集群-HDFS集群中大数据运维常用的命令总结 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客会简单涉及到滚动编辑,融合镜像文件,目录的空间配额等运维操作简介.话 ...
- linux 常用awk命令
linux awk命令详解awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每 ...
- 常用AWK命令
常用AWK命令 Awk is a programming language which allows easy manipulation of structured data and the gene ...
- 常用awk命令(转)
awk 用法:awk ' pattern {action} ' 变量名 含义 ARGC 命令行变元个数 ARGV 命令行变元数组 FILENAME 当前输入文件名 FNR 当前文件中的记录号 FS 输 ...
- 【大数据】Hadoop常用启动命令
Hadoop常用启停命令 最近在装大数据环境,不知由于年纪大的问题还是笨的缘故,老师记不住一些常用命令,在这里就单独记一下Hadoop常用的启停命令.Hadoop常用的启停命令都在hadoop/sbi ...
- 处理fMRI数据的一些常用Matlab命令
背景 处理fMRI数据常常用到MATLAB,在此记录一些常用代码及功能. 1.读取原始DICOM数据 1-1 读入dicom图像并绘图: Image = dicomread('fMRI.dcm'); ...
- Hadoop基础-HDFS集群中大数据开发常用的命令总结
Hadoop基础-HDFS集群中大数据开发常用的命令总结 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本盘博客仅仅列出了我们在实际生成环境中常用的hdfs命令,如果想要了解更多, ...
- 正则表达式小结,数据预处理中常用的shell命令
数据预处理中,这部分命令非常有用. 不需要编写代码,直接通过shell脚本通常就能修改文件格式.有时候sed和awk联合几乎能实现所有功能. 管道命令 | 重定向命令>,2>,>&g ...
- 使用 awk 命令统计文本
2022-04-19 11:25:15.008,b4d13bfca8fe4b93a85e65a88520d945,LogScheduler#printLog,10ms,Y,xxxxxxxx 2022- ...
随机推荐
- [ 转载 ] Java基础13--equals方法
一.equals方法介绍 1.1.通过下面的例子掌握equals的用法 1 package cn.galc.test; 2 3 public class TestEquals { 4 public s ...
- 理解Django的makemigrations和migrate
在你改动了 model.py的内容之后执行下面的命令: python manger.py makemigrations 相当于在该app下建立 migrations目录,并记录下你所有的关于modes ...
- hdu 5317 RGCDQ (2015多校第三场第2题)素数打表+前缀和相减求后缀(DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5317 题意:F(x) 表示x的不同质因子的个数结果是求L,R区间中最大的gcd( F(i) , F(j ...
- BZOJ 2754 SCOI 2012 喵星球上的点名 后缀数组 树状数组
2754: [SCOI2012]喵星球上的点名 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 2068 Solved: 907[Submit][St ...
- Codeforces Round #248 (Div. 1) B. Nanami's Digital Board 暴力 前缀和
B. Nanami's Digital Board 题目连接: http://www.codeforces.com/contest/434/problem/B Description Nanami i ...
- SGU 406 Goggle
406. Goggle Time limit per test: 0.25 second(s)Memory limit: 65536 kilobytes input: standardoutput: ...
- git一些命令
************git基本命令***************git config --global user.name "xielehe" 设置名字git config - ...
- C# 推送模板
C#推送模板.安卓个推.消息推送 http://docs.getui.com/server/csharp/template/
- ROS知识(16)----如何编译时自动链接同一个工作空间的其他包的头文件(包含message,srv,action自动生成的头文件)
catkin_make编译时,往往需要自动链接同一个工作空间的其他包的头文件.否则会出现类似如下的错误: /home/xx/xx_ws/srcA_package/src/db.hpp:13:26: f ...
- spring---transaction(3)---源代码分析(事务的管理器PlatformTransactionManager)
写在前面 由于实现事务功能的方式各不相同,Spring进行了统一的抽象,形成了PlatformTransactionManager事务管理器顶级接口(平台事务管理器),事务的提交.回滚等操作全部交给它 ...