数据需求统计常用shell命令 一、时间和时间戳的转换 1、将时间转换为时间戳selectunix_timestamp('2009-10-2610-06-07')如果参数为空,则处理为当前时间 2、将时间戳转换为时间selectfrom_unixtime(1256540102)有些应用生成的时间戳是比这个多出三位,是毫秒表示,如果要转换,需要先将最后三位去掉(标准的10位数字,如果是13位的话可以以除以1000的方式),否则返回NULLexecl函数:(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 >
常见shell操作 来自淘豆网m.daumloan.com转载请标明出处.