shell排序、统计

shell排序、统计

最近开始研究shell脚本编程。
偶尔接到朋友那里的一个需求,做完需求之后,想认真系统的学习shell编程相关知识。与大家分享朋友的shell需求。
对log文件的内容进行排序、统计。

log文件样式类似:
方法method1,执行时间: 25ms.
方法method2,执行时间: 102ms.
方法method3,执行时间: 102ms.
方法method5,执行时间: 132ms.
方法method6,执行时间: 22ms.

详细需求:统计log文件中每个方法的平均时间,按照平均时间逆序排列。

最后粘贴处我写的实现shell代码:

cat $1 |awk -F ':|执行' '{print $4}'|sort |uniq>quchong.log
for i in `cat quchong.log`
do
iptj=`cat  $1 |grep $i|wc -l`
sumiptj=`cat $1|grep $i|awk -F ':|ms' '{sum+=$5} END {print "Sum = ", sum}'`
echo "方法名:"$i"  执行总次数为"$iptj"次,总共耗时为"$sumiptj",平均请求时间:"$(($sumiptj/$iptj))"ms" >> result.txt
done
cat result.txt

脚本整个思路是把所有的方法名先放到quchong.log,得到类似如下格式文件,这是已经去重的。

method1
method2
method3

然后遍历quchong.log,从目标文件(需要统计的)中得到对应的方法执行总次数,和方法执行总ms数。执行除法即可。

我贴出的代码没有执行排序。有兴趣的可以利用sort命令对result.txt结果进行排序。

现在简单介绍几个命令:

  1. awk
    主要针对文件每行进行操作,-F 分割符号 $4取分隔符分割后第4个分割 值,特殊的$0表示整行。

至此,复杂的文件文件在shell脚本命令的处理下,即可完成,有其他语言或程序无可比拟的地方,这也是我下决定要学shell编程的原因。不一定要达成什么,就是想做简单的事情,优美的事情。与大家共勉!

ps:编写完脚本后,保存都是白色,那是没有执行权限,利用chmod命令

chmod +x  xxx.sh

即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java技术之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值