截至到2月26日,网络遥控器的一些统计
1,统计终端用户个数
cat terminal02 terminal0226.txt | cut -f 3 | grep -v 'null' | wc -l
21个用户,去除null之后实际为19个
2,去除行为数据中的空字段,提取出用户id,operateBehavior,operateType,operateTime,remark 字段
cat operate0226.txt | grep -v 'null' | cut -f 5,6,7,8,9 > preDealed.data
统计可用记录数:
wc -l preDealed.data
3,统计贡献记录数目最多的用户
cat preDealed.data | cut -f 1 | sort | uniq -c | sort -r -n | sed '1,$s/^[ ]*//g' >user.top
4,统计显式频道的top10
cat preDealed.data | cut -f 5 |grep '频道:' | cut -d ',' -f 1 | cut -d ':' -f 2 | sed '/^$/d' | sort | uniq -c | sort -r -n | head -n 11 > ../result_data/program.top
5.统计显式节目的top10
cat preDealed.data | cut -f 5 | grep '节目' | cut -d ',' -f 3 | cut -d ':' -f 2 | sed '/^$/d' | sort | sed '/^$/d'| uniq -c | sort -r -n | sed '1,$s/^[ ]*//g' | head -n 11 > ../result_data/program.top
6,关于提取时间段的一个java程序
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package com.bobo.test; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; public class TengxunTimeDiff { //默认登录时间如果超过10分钟,那么就是一次另外的登录。 private static int TimeDiff=20*60; public static void main(String[] args){ String inFilePath="./myData/tengxun/preDealed.data"; String outFilePath="./myData/tengxun/timeDiff.data"; TengxunTimeDiff timeDiff=new TengxunTimeDiff(); timeDiff.calTimeDiff(inFilePath,outFilePath); System.out.println("TengxunTimeDiff執行完畢"); } private void calTimeDiff(String inFilePath,String outFilePath){ FileReader fr=null; BufferedReader br=null; FileWriter fw=null; BufferedWriter bw=null; PrintWriter pw=null; ArrayList<Integer> lineNumList=new ArrayList<Integer>(); try{ fr=new FileReader(inFilePath); br=new BufferedReader(fr); fw=new FileWriter(outFilePath); bw=new BufferedWriter(fw); pw=new PrintWriter(bw); //分两次吧,第一次先记录下来变化处的行号 String line=null; String firstLine=br.readLine(); String previousId=firstLine.split(" ")[0]; String curId=previousId; int lineNum=1; lineNumList.add(lineNum); while((line=br.readLine())!=null){ curId=line.split(" ")[0]; lineNum++; if(!curId.equals(previousId)){ //说明上一条的开始时间和结束时间可以写入了 previousId=curId; lineNumList.add(lineNum); } } lineNumList.add(lineNum); System.out.println(lineNumList); fr=new FileReader(inFilePath); br=new BufferedReader(fr); lineNum=1; int listIndex=0; while((line=br.readLine())!=null){ System.out.println(lineNum+":"+lineNumList.get(listIndex)); //注意對與最後一行也需要單獨處理 if(listIndex>lineNumList.size()-1){ return; } if(lineNum==lineNumList.get(listIndex)-1){ pw.println(line.split(" ")[3]); }else if(lineNum==lineNumList.get(listIndex)){ pw.println(line.split(" ")[0]+" "+line.split(" ")[3]); listIndex++; }else if(lineNum==lineNumList.get(lineNumList.size()-1)){ pw.println(line.split(" ")[3]); } lineNum++; } pw.println(); //一次文件讀兩次 }catch(Exception e){ e.printStackTrace(); }finally{ try { bw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } pw.flush(); pw.close(); } } }