dikar 发表于 2013-1-26 14:41:18

收集一些统计的Shell脚本

经常会有统计日志的功能,故收集了一些shell脚本,方便以后常用
 
例如以下需求:
1:统计排名
   数据内容为
a 12b 13b 14b 15b 67a 23d 44a 56  
要求得到:
b 4a 3d 1 java里的方法是使用hashMap,shell里当然也一样了。
 
awk '{a[$1]++}END{for(i in a){print i,a | "sort -r -k 2"}}'file 
  还有另外一种方法是使用cut
 
cut -c1 file | sort | uniq -c | sort -r | awk '{print $2,$1}' 
2 某列求和
例如数据内容为:
1234 希望得到 1 +2 +3 +4 的结果
   shell脚本为
awk '{a = a + $1} END {print a} ' file 
3 统计某一类的总和数(就是多了个if的判断)
 
awk '{ if($1==2) a = a + $1} END {print a} ' file 
 
4 提取 AAA=BBB,CCC=DDD为BBB:DDD

awk '/add success/{ print $7$8}' DBReaderLog0.log | sed -r 's/userId=(.*?)cartId=(.*?)$/\1:\2/' fgrep 'add success' DBReaderLog0.log| awk -F '=' '{print $2,$3}' | awk '{print $1":"$3}'awk -F '=' '/add success/{print $2,$3}' DBReaderLog0.log | awk '{print $1":"$3}'awk '/add success/ { print gensub("userId=(.*)","\\1","g",$7) ":" gensub("cartId=(.*)","\\1","g",$8)}' DBReaderLog0.log awk '/add success/ { print substr($7,8)":"substr($8,8)}' DBReaderLog0.log
页: [1]
查看完整版本: 收集一些统计的Shell脚本