蚇数据需求统计常用shell命令蚆螃 袁 莁 莇 袅一、时间和时间戳的转换罿 螀1、将时间转换为时间戳肇selectunix_timestamp('2009-10-2610-06-07')蚂如果参数为空,则处理为当前时间莂 腿2、将时间戳转换为时间袇selectfrom_unixtime(1256540102)螄有些应用生成的时间戳是比这个多出三位,是毫秒表示,如果要转换,需要先将最后三位去掉(标准的10位数字,如果是13位的话可以以除以1000的方式),否则返回NULL蒀execl函数:蕿(B2+8*3600)/86400+70*365+19,B2代表要转换的时间,单元格属性改为日期格式薈 螅 螂二、IP地址和数字之间的转换肈 ('');羁 (3525181543);蚄 聿三、文本处理袇 随机取用户蚅cat file1|awk'{printrand(),$1}'|sort-k1|awk'{print$2}'|head-4000莂 分组求和芅 蒂 awk'{s[$1]+=$2}END{for(iins){ printi,s[i]}}'file1>file2薀 以第一列为变量名 第一列为变量,将相同第一列的第二列数据进行累加 打印出和羀肆 薄 awk'{s[$1""$2]+=$3}END{for(iins){ printi,s[i]}}' file1>file2袂 以第一列和第二列为变量名,将相同第一列、第二列的第三列数据进行累加 打印出和葿螆 蚅 awk'{s[$1]+=$2;a[$1]+=$3}END{for(iins){ printi,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分割,否则就算是32G的内存的机器都会被吃掉;蒁蚇 肇 awk'NR==FNR{a[$1""$2]=1}NR>FNR&&a[$1""$2]>0{print$0}' file1file2>file3薅 如果file1、file2中,2个文件的第一列第二列值相同,输出第2个文件的所有列薀FNR技技a[$l'"'$2〕>0{p户int$0}尹犷iles于ile6到7渊8l"src="http://avocado./fconv/files/201304/"width="576"height="173"/>莁 螈2、匹配非交集项莃 awk'NR==FNR{a[$1]=1}NR>FNR&&a[$1]<1print=""0=""file1=""file2="">file3羂 针对2个文件的第一列做比较,输出:在file2中去除file1中第一列出现过的行袀蒈第二种方法:莄catfile1file2|sort|uniq-d > |sort|uniq-u>file3艿 取最大值、最小值蒅1、针对(2列的文件)蒃awk'{max[$1]=max[$1]>$2?max[$1]:$2}END{for(iinmax)printi,max[i]}' file虿第一列不变,取第二列分组最大值螅 芃awk'{if(!min[$1])min[$1]=20121231235959;min[$1]=min[$1]<$2?min[$1]:$2}END{for(iinmin)printi,min[i]}'file薁 第一列不变,取第二列分组最小值肈 蒅2、针对单列的文件芄awk'BEGIN{max=0}{if($1>max)max=$1fi}END{print"Max=",max}'file2蚀awk'BEGIN{min=1999999}{if($1<min)min=$1fi}END{print"Min=",min}'file2薇 求和、求平均值、求标准偏差莆求和肂catdata|awk'{sum+=$1}END{print"Sum=",sum}'羇 羆求平均膃catdata|awk'{sum+=$1}END{print"Average=",sum/NR}'膀 蚀求标准偏
常见shell操作 来自淘豆网m.daumloan.com转载请标明出处.