原文: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命令的更多相关文章

  1. Hadoop集群-HDFS集群中大数据运维常用的命令总结

    Hadoop集群-HDFS集群中大数据运维常用的命令总结 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客会简单涉及到滚动编辑,融合镜像文件,目录的空间配额等运维操作简介.话 ...

  2. linux 常用awk命令

    linux awk命令详解awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每 ...

  3. 常用AWK命令

    常用AWK命令 Awk is a programming language which allows easy manipulation of structured data and the gene ...

  4. 常用awk命令(转)

    awk 用法:awk ' pattern {action} ' 变量名 含义 ARGC 命令行变元个数 ARGV 命令行变元数组 FILENAME 当前输入文件名 FNR 当前文件中的记录号 FS 输 ...

  5. 【大数据】Hadoop常用启动命令

    Hadoop常用启停命令 最近在装大数据环境,不知由于年纪大的问题还是笨的缘故,老师记不住一些常用命令,在这里就单独记一下Hadoop常用的启停命令.Hadoop常用的启停命令都在hadoop/sbi ...

  6. 处理fMRI数据的一些常用Matlab命令

    背景 处理fMRI数据常常用到MATLAB,在此记录一些常用代码及功能. 1.读取原始DICOM数据 1-1 读入dicom图像并绘图: Image = dicomread('fMRI.dcm'); ...

  7. Hadoop基础-HDFS集群中大数据开发常用的命令总结

    Hadoop基础-HDFS集群中大数据开发常用的命令总结 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本盘博客仅仅列出了我们在实际生成环境中常用的hdfs命令,如果想要了解更多, ...

  8. 正则表达式小结,数据预处理中常用的shell命令

    数据预处理中,这部分命令非常有用. 不需要编写代码,直接通过shell脚本通常就能修改文件格式.有时候sed和awk联合几乎能实现所有功能. 管道命令 | 重定向命令>,2>,>&g ...

  9. 使用 awk 命令统计文本

    2022-04-19 11:25:15.008,b4d13bfca8fe4b93a85e65a88520d945,LogScheduler#printLog,10ms,Y,xxxxxxxx 2022- ...

随机推荐

  1. 【CF148D】 Bag of mice (概率DP)

    D. Bag of mice time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...

  2. Python进阶篇:Python简单爬虫

    目录 前言 要解决的问题 设计方案 代码说明 小结 前言 前一段一直在打基础,已经学习了变量,流程控制,循环,函数这几块的知识点,就想通过写写小程序来实践一下,来加深知识点的记忆和理解.首先考虑的就是 ...

  3. Java并发(十九):final实现原理

    final在Java中是一个保留的关键字,可以声明成员变量.方法.类以及本地变量. 一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编 ...

  4. 算法转AI平台工程师记录-0

    --- vim源码安装: 1. git clone https://github.com/vim/vim.git 2. cd vim && ./configure --prefix=x ...

  5. 解决Jboss中log4j在应用里面无法使用的问题

    [参考1]解决Jboss中log4j在应用里面无法使用的问题http://developer.51cto.com/art/200906/128691.htm文章中说到“如果你的应用下存在WEB-INF ...

  6. python开发_platform_获取操作系统详细信息工具

    ''' python中,platform模块给我们提供了很多方法去获取操作系统的信息 如: import platform platform.platform() #获取操作系统名称及版本号,'Win ...

  7. wikioi 3130 CYD刷题(背包)

    题目描述 Description 下午,CYD要刷题了,已知CYD有N题可刷,但他只有M分钟的时间,而且他的智慧值为Q,也就是说他只能做出难度小于等于Q的题目.已知每题可得积分Ai,需花费时间Bi,难 ...

  8. QT 安装 4.8.7 on solaris 10

    1.  下载 QT 4.8.7: http://download.qt.io/official_releases/qt/4.8/4.8.7/qt-everywhere-opensource-src-4 ...

  9. 第一次ACM赛后总结及感悟

    2014 "嘉杰信息"杯 ACM/ICPC湖南程序设计邀请赛暨第六届湘潭程序设计比赛 赛后总结,尽管已经是大二第二学期了,这却是我的第一次真正的ACM比赛经历,大一尽管说就已经进了 ...

  10. Bootstrap 3之美01-下载并引入页面

    本篇主要包括: ■ 下载Bootstrap 3■  Bootstrap 3引入页面 下载Bootstrap 3 →打开网站:http://getbootstrap.com/→点击屏幕中央位置的Down ...