常用linux 文本分析命令摘要一

有时我们需要对日志等信息进行统计,如某些数据的的平均值,方差,变异系数等。

less a.txt | awk '{cnt++; sum=sum+$0; print cnt ":"$0} END{print (cnt+1)":" sum/cnt}' |sort -rn -k 1 -t: |awk -F":" '{if(NR==1){AVG_XX=$2}else{count++; sum=sum+($2-AVG_XX)*($2-AVG_XX);}} END{print "AVG:" AVG_XX;print "STD:"sqrt(sum/(count-1)); print "CV:" sqrt(sum/(count-1))/AVG_XX;print "Total Count:" count}'



另外一种更加快速简单的统计方法。

less a.txt |awk '{cnt++; Ssum=Ssum+$0*$0; sum=sum+$0;} END{std=sqrt((Ssum*cnt-sum*sum)/(cnt*(cnt-1)));print "AVG:" sum/cnt; print "STD:"std;print "CV:"std*cnt/sum; print "Total Count:"cnt}'


查看所有jar文件是否包含某个类。


ls *.jar |awk '{print $0; cmd="jar -tvf "$0 "|grep -i ClassXXX --color";system(cmd)}'

统计常用的命令,同样也可以用来统计数据的分布特征
history |awk '{Data[$2]++; count++;}END {for (a in Data) print Data[a]" "Data[a]/count*100 "% " a;}'| grep -v "./" |column -c3 -s " " -t |sort -nr |nl |head -n20

从日志中仅过滤出日期和特定数字
echo "2014-10-14 23:19:20,852 [Thread-22] IN 23345, cost 47ms" sed 's/^\([^:]*\):.*cost \([0-9]\+\).*$/\1,\2/g' -->2014-10-14 23,47
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值