shell大数据计算——bc巧用
来源:互联网 发布:媒介数据分析经理招聘 编辑:程序博客网 时间:2024/06/04 00:39
问题:现在又一id分配器,这个id分配器的上限是uint64,也就是 18446744073709551615。如果这个id分配器分配了一个id,你需要判断这个id是否是0到18446744073709551615 之间,这个时候,你会发现,使用shell本身的(())来计算就会出问题,if判断的时候也会有问题的,其实这个就超出了shell本身所能计算的范围,需要借助于专门的工具进行。
解决:其实使用bc进行计算就可以了。解决计算的问题之后,又出现了一个新的问题,如何进行判断,比如我要判断a是否在uint64范围之内,假如a的取值是1,那么a与18446744073709551615做差之后的数据还不在if的判断范围之内,所以继续使用bc进行判断就可以了。
实例:从./data目录下去读取所有的文件,然后从文件中读取分配的id,得到id之后,拿去判断是否在范围之内,如果在,那么将这个文件的名字写到RESULT这个变量中,最后打印出来。
解决:其实使用bc进行计算就可以了。解决计算的问题之后,又出现了一个新的问题,如何进行判断,比如我要判断a是否在uint64范围之内,假如a的取值是1,那么a与18446744073709551615做差之后的数据还不在if的判断范围之内,所以继续使用bc进行判断就可以了。
实例:从./data目录下去读取所有的文件,然后从文件中读取分配的id,得到id之后,拿去判断是否在范围之内,如果在,那么将这个文件的名字写到RESULT这个变量中,最后打印出来。
点击(此处)折叠或打开
- #!/bin/bash
- #这些数据计算有问题
- INT32_MAX=2147483647
- UINT32_MAX=4294967295
- INT64_MAX=9223372036854775807
- UINT64_MAX=18446744073709551615
- MID=100000000
- ID_DIR="./data"
- RESULT=""
- find_min_num()
- {
- min=$UINT64_MAX
- argc=$#
- for (( i=1;i<=$argc;i++ ))
- do
- x=`echo $1 | cut -c1`
- if [ "$x" != "-" ]; then
- xx=`echo "($1)-($min)" | bc | cut -c1`
- fi
- if [ "$xx" = "-" ]; then
- min=$1
- fi
- shift
- done
- echo $min
- }
- cd $ID_DIR 1>/dev/null 2>&1
- FILE=`ls idalloc.* 2>/dev/null`
- for file in $FILE
- do
- line=`wc -l $file | cut -d" " -f1`
- for(( i=2;i<=$line;i++ ))
- do
- num=`sed -n ${i}p $file | cut -d" " -f4`
- int32_ret=`echo $INT32_MAX-$num | bc`
- uint32_ret=`echo $UINT32_MAX-$num | bc`
- int64_ret=`echo $INT64_MAX-$num | bc`
- uint64_ret=`echo $UINT64_MAX-$num | bc`
- min=`find_min_num $int32_ret $uint32_ret $int64_ret $uint64_ret`
- xxx=`echo "($min)-($MID)" | bc | cut -c1`
- if [ "$xxx" = "-" ]; then
- RESULT="$RESULT|$file"
- break
- fi
- done
- done
- cd - 1>/dev/null 2>&1
- if [ "$RESULT" = "" ];then
- RESULT="SUCC"
- fi
- echo "out_file:$RESULT"
- exit 0
0
上一篇:lighttpd源代码分析资料
下一篇:centos6.3
相关热门文章
- APP开发报价单,如何计算APP报...
- ZIP压缩算法详细分析及解压实...
- 编写一个GPS串口读取程序...
- 大数据之快速搭建hadoop2.6集...
- JDK、JRE、JVM三者间的关系...
- python 自动化测试平台 Robot ...
- python 自动化测试平台 Robot ...
- python snmp 自动化2-在python...
- 自动化测试详细测试计划 模板...
- python snmp 自动化3-修改pyth...
- linux dhcp peizhi roc
- 关于Unix文件的软链接
- 求教这个命令什么意思,我是新...
- sed -e "/grep/d" 是什么意思...
- 谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~
评论热议
0 0
- shell大数据计算——bc巧用
- shell命令实现——bc计算器
- shell 使用bc解决浮点数计算
- shell中的数据计算
- AI—2017大数据版图发布:AI、大数据与云计算结合是大势所趋
- shell脚本表达式计算命令bc和限定计算结果小数位数
- 大数据-计算引擎
- Spark 大数据计算
- Shell bc calculator
- shell学习十一--bc
- unix bc计算命令
- 大数据时代——数据仓库,数据的分析统计 和 Hadoop分布式计算
- 云数据,大计算—海量日志数据分析与应用
- 大数据-hbase shell操作
- C++计算大数据阶层
- 云计算VS大数据
- 大数据与云计算
- 大数据与云计算
- 第八讲:c/c++综合练习——存储电话号码
- Linux学习资料下载
- 程序员面试经典--链表回文判断
- lighttpd源代码分析资料
- 从“懒”心理去设计的常用功能
- shell大数据计算——bc巧用
- Pid控制算法—算法原理
- centos6.3
- 二叉树的遍历(递归与非递归)
- 办公软件的选择
- iOS开发:一个快速生成model属性的方法
- maven 上传jar到私服 pom 以及命令的方式
- U盘安装centos 6.3教程(超级详细图解教程)
- mysql配置详解
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
尿素价格行情
今日尿素价格及后市预测
尿素是什么肥
尿素的主要成分
为什么不建议长期用尿素
尿热
尿气味大
尿的味道重是什么原因
尿白是什么
尿的气味
尿的气味与疾病
排尿有异味
尿的尿很大味为什么
尿有气味是什么原因
尿异味
尿的味道很重
为什么尿有异味
尿有异味女性
尿味道很大
尿尿黄而且异味很大
尿气味很重是什么原因
尿是什么味道
尿少是什么原因
偶尔尿滴白
尿检正常值
尿少尿黄
尿是黄的是什么原因
尿赤黄
尿偏黄
拉尿拉出白色的液体
尿臭
女人尿味很腥很臭怎么回事
尿很臭
尿很黄很臭
拉尿臭是什么原因
尿臭看什么科
尿发臭是怎么回事
尿味腥臭
男人尿臭是什么原因
为什么尿特别臭
尿臭怎么办