使用正则表达式过滤Linux启动日志中的时间戳

Linux内核启动时,会显示启动信息。调试驱动的时候,这些信息非常有用。但是比较工具默认会把前面方括号里的时间戳也一起差分,因为每次启动的时间都略有差异,所以会造成每行都有差分,等于没有差分的情况出现。
20230419_compare_without_timestamp_filter
这种情况当然要用到正则这个大杀器出马了。只需一个规则找到每行开始的中括号,那么无论是在差分工具里增加正则filter,还是用文本工具替换掉时间戳再比较,就不会出现处处都不同的情况了。
20230419_compare_with_timestamp_filter
这句正则特别简单:

\[[\s]{2,4}[\d]{1,}.[\d]{6}\]

简单说明一下,这段正则查找的内容是【左方括号·2-4个空格·1-n位数字·半角句号·6位数字·右方括号】,顺序写下来都是简单逻辑,稍微别扭一点的只有两个转义。
完事儿。

已有5条评论

  1. 差分工具的规则我一直写不明白。想自己写个vue的规则,一直没成功。

  2. K

    这个意思应该是一串数前边有2到4个空格,然后匹配小数点后边带6个数的?

    1. 就是写的非常死。[ 7.352671] 这种。因为启动秒数最糟会到100秒以上,所以是2-4个空格,然后是整数部分1-n位,然后小数点,然后6位小数。

  3. K

    我学正则都是为了解决Excel问题,属于不知其所以然的选手,我直接把你这个问题看成Excel数据来处理,=IF(AND(VALUE(TRIM(A1))>0,LEN(A1)-LEN(SUBSTITUTE(A1,”.”,””))=6,LEN(TRIM(LEFT(A1,FIND(“.”,A1)-1)))=2),”TRUE”,”FALSE”)
    所以貌似你的整数部分定义没啥意义

    1. 好像确实没什么用。写这种东西的想法就是尽量写具体一点避免误伤。刚才试了下,\[[\s\d]{1,14}.[\d]{6}\]也一样。
      但是正则就是这种你写了一次配上了就再也不想改的东西。

  4. 我发现正则这东西一会不用就会忘记,当要用时又得重新过一遍。

    1. 是的。正则这东西真没有特别记的需要。

  5. 这个工具看起来不错呢,下载一个试试!

你好,新朋友。留言前请先填写昵称邮箱