读书人

征集一些统计的Shell脚本

发布时间: 2012-08-21 13:00:22 作者: rapoo

收集一些统计的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[i] | "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 
?

读书人网 >操作系统

热点推荐