Shell脚本中完成带单位的数据统计

经常会有需求,总计一些不同单位,要求其总和或者平均值。 比如下面的文本数据:

1000
2.1k
3.2K
12.48Kb
1.44M
2.56mB
1.1GB

字节数据,里面有K,M,G,有大小写,而且后面还可能有b或者B,这个时候要求其和,这个时候就要写个小脚本来处理。下面是处理脚本.

#!/bin/bash

total=0
while read LINE
do
   var=$(echo $LINE | tr  -d '[0-9.]')                  # 获取除0-9数字和.外的字符
   num=$(echo $LINE | tr -cd '[0-9.]')                 # 仅需0-9和.
   case $var in
       [Kk]*) total=$(echo "$total + $num * 1024" | bc) ;;              # 匹配k,K
       [Mm]*) total=$(echo "$total + $num * 1024 * 1024" | bc) ;;       # 匹配m,M
       [Gg]*) total=$(echo "$total + $num * 1024 * 1024 * 1024" | bc) ;;# 匹配g,G
           *) total=$(echo "$total + $num" | bc) ;; # 浮点型和整数通过bc来计算
   esac
done < cat DataFile

echo "total = $total"

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值