收集一些统计的Shell脚本

经常会有统计日志的功能,故收集了一些shell脚本,方便以后常用

例如以下需求:

1:统计排名

   数据内容为

a 12
b 13
b 14
b 15
b 67
a 23
d 44
a 56
 

要求得到:

b 4
a 3
d 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 某列求和

例如数据内容为:

1
2
3
4

 希望得到 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 
 

猜你喜欢

转载自dikar.iteye.com/blog/1008455