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

如何使用bash或awk从文本文件提取数值并执行算术运算

不考虑科学计数法的最简方案

优先推荐这个适配常规场景的版本,代码最简洁,可直接输出运算结果:

awk '/number/{n[++i]=$2} END{print 10*(n[1]+n[2])/(n[1]-n[2])}' FILE

如果需要把两个数值提取为bash变量单独复用,可使用以下写法:

# 提取数值到变量
num1=$(awk '/number1/{print $2}' FILE)
num2=$(awk '/number2/{print $2}' FILE)
# 执行运算得到结果
result=$(awk -v a="$num1" -v b="$num2" 'BEGIN{print 10*(a+b)/(a-b)}')
# 打印结果验证
echo $result
兼容科学计数法的方案

awk原生支持6.145E-03这类科学计数法格式的数值解析,如需兼容特殊场景,无需改动上面的逻辑,直接执行即可。如果需要固定输出格式(比如保留3位小数,避免输出自动转为科学计数法),可以把print替换为printf指定格式:

awk '/number/{n[++i]=$2} END{printf "%.3f\n", 10*(n[1]+n[2])/(n[1]-n[2])}' FILE
可选优化(除零错误规避)

如果存在num1和num2相等的可能,可增加判断逻辑避免除零报错:

awk '/number/{n[++i]=$2} END{
    if(n[1] == n[2]){
        print "错误:两数相等无法执行除法"
    } else {
        printf "%.3f\n", 10*(n[1]+n[2])/(n[1]-n[2])
    }
}' FILE

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:06:03