shell如何计算这组数据中各个数据的范围大小??

有一组数据。

33 45 55 81 85 93 110 130 135


计算这组数据中
3个数据:

1:小于等于60的数据,计算最大数字和最小数字的差。 这组数据中是 55-33=22

2:  范围(60,100]  ,即大于60小于等于100的数据,  这组数据中是 93-81=12

3: 范围(100,150] , 即大于100,小于等于150的数据,  这组数据中是 135-110=25

如何用shell 实现上面的功能??

作者: vitas333_cu   发布时间: 2011-06-15

本帖最后由 yinyuemi 于 2011-06-15 04:20 编辑
  1. echo '33 45 55 81 85 93 110 130 135' |\
  2. awk '{
  3.         a[1]=$1
  4.         for(i=1;i<=NF;i++) {
  5.                 if($i<=60){a["le60"]=$i}
  6.                 if($i>60&&$i<=100) ("gt60" in a)?a["le100"]=$i:a["gt60"]=$i
  7.                 if($i>100&&$i<=150) ("gt100" in a)?a["le150"]=$i:a["gt100"]=$i
  8.                 }
  9.         }
  10. END{
  11. print a["le60"]-a[1] RS a["le100"]-a["gt60"] RS a["le150"]-a["gt100"]
  12. }'
  13. 22
  14. 12
  15. 25
复制代码

作者: yinyuemi   发布时间: 2011-06-15

学习了。

作者: zooyo   发布时间: 2011-06-15

学习:em39:

作者: horizonhyg   发布时间: 2011-06-15