You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Bash/GNU工具提取日志中每行的耗时数值?

解决方案

针对日志行包含多个条目、需要提取所有耗时数值的问题,这里提供几种实用的bash/GNU工具解决方案:

方法1:用grep精准匹配数值模式

利用grep的-o选项(仅输出匹配部分),结合正则表达式匹配浮点数格式,直接提取所有耗时:

grep my_function $LOG_FILE | grep -o '[0-9]\+\.[0-9]\+'

解释:

  • 第一个grep先过滤出包含my_function的行(如果是已经处理后的日志,可省略此步骤)
  • 第二个grep -o会把每行中所有符合「数字+.+数字」格式的内容单独输出,每行一个数值,完美适配单行多条目的情况。

方法2:用awk基于关键词定位

如果担心日志中存在其他浮点数导致误匹配,可以用awk基于took关键词定位其后的耗时数值:

grep my_function $LOG_FILE | awk '{for(i=1;i<=NF;i++) {if($i == "took") print $(i+1)}}'

解释:

  • 遍历每行的所有字段(NF代表当前行的字段总数)
  • 当遇到字段等于took时,输出它的下一个字段(即耗时数值),不管一行里有多少个took,都会被逐一提取。

方法3:用sed拆分后过滤

通过sed把所有非数值相关的字符替换为换行,再过滤空行得到结果:

grep my_function $LOG_FILE | sed -E 's/[^0-9.]/\n/g' | grep -v '^$'

解释:

  • sed -E用正则把所有不是数字和小数点的字符替换成换行符,将原整行拆分为多行
  • grep -v '^$'过滤拆分后产生的空行,剩下的就是所有耗时数值。

内容的提问来源于stack exchange,提问作者Green 绿色

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 11:52:19