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