数据需求统计常用 shell 命令一、时间和时间戳的转换 1、将时间转换为时间戳 select unix_timestamp('2009-10-26 10-06-07') 如果参数为空,则处理为当前时间 2、将时间戳转换为时间 select from_unixtime(1256540102) 有些应用生成的时间戳是比这个多出三位,是毫秒表示,如果要转换,需要先将最后三位去掉(标准的 10 位数字,如果是 13 位的话可以以除以 1000 的方式),否则返回 NULL execl 函数: (B2+8*3600)/86400+70*365+19 , B2 代表要转换的时间, 单元格属性改为日期格式二、 IP地址和数字之间的转换 IP地址转化为数字 select inet_aton(''); 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] } }' 如果第一列相同,则根据第一列来分组,分别打印第二列和第三列的和 匹配 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 分割,否则就算是 32 G 的内存的机器都会被吃掉; awk 'NR==FNR{a[$1" "$2]=1}NR>FNR&&a[$1" "$2]>0{print $0}' file1 file2> file3 如果 file1 、 file2 中, 2个文件的第一列第二列值相同,输出第 2个文件的所有列 FNR 技技 a[$l'"'$2 〕> 0{p 户 int$0 }尹犷 iles 于 ile6 到7渊 8l" src="http://avocado./fconv/files/201304/3a523a9f0cee0a3f5418d2fb3a " width="576" height="173" /> 2、匹配非交集项 awk 'NR==FNR{a[$1]=
常见shell操作 来自淘豆网m.daumloan.com转载请标明出处.