使用 awk 对 3.016e-06 形式的浮点求和

使用 awk 对 3.016e-06 形式的浮点求和

我想对以下形式的浮点数求和: 3.016e-06 浮点数保存在名为 S_3x3.txt S_4x4.txt ... S_8x8.txt 我的代码仅对第一个整数求和。它计算的是 3 + 4,而不是 3.016e-06 + 4.022e-06。我该如何解决这个问题?

    x=3
    while [ $x -le 8 ]
    do
        find . -name "S_$((x))x$((x))*" -print | sort -t'_' -nk3 | 
        xargs -J {} awk -F' ' 'FNR == 1 && !/^($|#)/{ sum+=$1) }END{ 
        print sum }' {} >> cS_CPU.txt
    x=$(( x+1 ))
    done

答案1

不是答案,但评论太长

    x=3
    while [ $x -le 8 ]
    do
        find . -name "S_${x}x${x}*" -print | sort -t'_' -nk3 | 
        xargs -J {} awk 'FNR == 1 && !/^($|#)/ { sum+=$1) } 
            END{ print sum }' {} >> cS_CPU.txt
    x=$(( x+1 ))
    done
  • 需要-F' '? awk 将按空格分隔字段
  • "S_$((x))x$((x))*"?可以变成“S_${x}x${x}*”。

相关内容