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

如何使用sed提取字符串中被包围的平均值数值

提取average对应数值的sed命令

要精准提取示例中average对应的数值,你可以用下面的sed命令:

echo "Test: 1000 calls, 15307 milliseconds, 11 minimum, 37 maximum, 15 average, top five [37,35,34,32,31]" | sed 's/.*, \([0-9]*\) average.*/\1/'

如果想避免字符串中其他逗号的干扰,也可以更明确地锁定maximum之后的数值:

echo "Test: 1000 calls, 15307 milliseconds, 11 minimum, 37 maximum, 15 average, top five [37,35,34,32,31]" | sed 's/.*maximum, \([0-9]*\) average.*/\1/'

命令解释

  • .*, (或.*maximum, ):借助sed的贪婪匹配特性,定位到average前面最近的目标分隔符,确保找到目标数值的前边界。
  • \([0-9]*\):捕获连续的数字序列,这就是我们需要的average对应数值。
  • average.*:匹配 average及其后面的所有内容,作为要替换掉的后边界部分。
  • \1:把整个字符串替换为之前捕获到的数字,最终只输出目标数值。

原命令问题说明

你之前用的sed 's/.*\(maximum,.*\)average/\1/',捕获的是maximum,到average之间的所有内容(包括空格和后续部分字符),没有精准定位到数字本身,所以输出会包含多余内容。

内容的提问来源于stack exchange,提问作者jstack100

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 12:45:05