`

awk计算到纳秒级的bug

阅读更多

在对日志信息进行实时监控分析时,需要对日志中纳秒级的时间进行计算,逻辑比较简单:找出开始时间、结束时间,遇到结束时间后输出时间间隔。
日志中的部分数据如下:

一开始写出来是这样的:

输出结果看似就是我想要的:

有的朋友可能看到这个结果后就直接使用了,但是较真的我还是把输出结果和bc的结算结果比较了一下,没问题。

接下来我习惯性的到日志中把每个输出结果进行确认,略一看没什么不对的地方,仔细一对比,发现日志中纳秒级的时间被awk处理后竟然变了。为了进行确认,写了如下代码:

输出结果如下:

对应的二进制数值如下:

发现awk的数值处理范围超过0X2FFFFFFFFFFFFE(13510798882111486)就不不准确了(为了找这个临界值,费了一番功夫),他会把0X2FFFFFFFFFFFFF当成0X30000000000000,如果在awk中对0X2FFFFFFFFFFFFF进行减一计算,值没有任何变化,对0X2FFFFFFFFFFFFE进行加法运算,加1和加2的结果都是0X30000000000000,但是awk又可以显示/处理更大的数值,从二进制结果中我也没看出有什么规律可循。有兴趣的可以深入源码层面研究下。

接下来,毅然放弃awk自身的计算功能,选择awk与bc的结合。于是,把代码修改成下面的样子:

分享到:
评论

相关推荐

    awk入门到精通.pdf

    此外, awk内建有pipe的功能, 可将处理中的数据传送给外部 的 Shell命令加以处理, 再将Shell命令处理后的数据传回awk程序, 这个特点也使得awk程序很 容易使用系统资源. 由于awk具有上述特色, 在问题处理的过程中, 可...

    awk学习awk学习awk学习awk学习

    awk学习awk学习awk学习awk学习awk学习awk学习awk学习

    awk入门级教材awk入门awk入门

    awk 是一门编程语言,它的基本操作是在一组文件上查找模式,并在包含这些模式实例的那 些行或字段上进行指定的动作。awk 使得特定数据的选择和变换操作更易于表达

    awk教程入门到精通

    awk完整教程 0基础入门到精通 awk完整教程 0基础入门到精通

    sed awk高级编程案例

    sed awk高级编程案例,大量的sed awk等命令的实现功能对比,让你使用shell更好的融汇贯通

    awk基本入门和高级用法

    awk学习快速入门、基本用法、高级应用。基本入门说明使用的基本方法;高级应用主要是管道的用法

    AWK用法AWK用法AWK用法

    awk ‘/101/’ file 显示文件file中包含101的匹配行。 awk ‘/101/,/105/’ file awk ‘$1 == 5′ file awk ‘$1 == “CT”‘ file 注意必须带双引号 awk ‘$1 * $2 >100 ‘ file awk ‘$2 >5 && $2<=15' file

    Linux主要shell命令、sed、awk使用详解

    Linux主要shell命令、sed、awk使用详解 Linux主要shell命令、sed、awk使用详解

    学习和理解AWK的最佳书籍Effective AWK Programming

     一致这本书是学习awk的最好书籍,网上下不到的,国内也买不到。国家图书馆和北京大学图书馆都有。强烈建议所有想学awk的同志们阅读(会有很多awk语言之外的启迪) 偶然机会得到,不敢独享,故在此分享所得。  ...

    AWK AWK 详细使用文档

    AWK 详细使用文档 AWK 详细使用文档 AWK 详细使用文档

    linux awk时间计算脚本及awk命令详解

    主要介绍了linux awk时间计算脚本及awk命令详解的相关资料,需要的朋友可以参考下

    athrough.awk

    执行 gawk -f atuhrough.awk 文件名.tr > myThrough //保存结果到myThrough文件 然后将处理吞吐量结果生成png图片执行如下命令即可生成吞吐量图片: gnuplot //进入gnuplot set terminal png size 640,480 //设置...

    awk参考资料下载awk

    awk参考资料, awk参考资料详情.

    awk详细用法小结awk awk

    因为遇到了awk问题,所以找到这个小结,共享一下

    awk 工具用法说明

    awk 工具用法说明 awk 工具用法说明 awk 工具用法说明

    Sed与Awk (中文版)

    本书在一开始就给出了一个概述和指南,论述了从grep到sed再到awk不断改进的功能。sed和awk具有相同的命令行语法,以脚本的形式接收用户的命令。因为所有这三个程序都使用UNIX正则表达式,因此书中用一章的篇幅来介绍...

    awk用法小结--有关awk的材料

    awk用法小结 - - - by ruson 2006.4 NTU 1. awk非常适合于结构化的文本文件(行、列数据)复杂处理。相对于sed而言,它可进行复杂的编程处理,并且可以产生复杂的报表输出。 2. awk通常有三个版本,旧awk、nawk...

    Linux四剑客之awk高级应用.doc

    创造者:Aho Wwinberger Kernighan 基于模式匹配检查输入文本,逐行处理并输出,通常用在shell中,获取指定的数据,单独使用时,可对文本数据做统计。

    awk-sed高级练习题pdf

    里面的题由浅入深,能全掌握对于一般应用还是很有帮助的。有答案

Global site tag (gtag.js) - Google Analytics