![使用 awk 对 3.016e-06 形式的浮点求和](https://linux22.com/image/72063/%E4%BD%BF%E7%94%A8%20awk%20%E5%AF%B9%203.016e-06%20%E5%BD%A2%E5%BC%8F%E7%9A%84%E6%B5%AE%E7%82%B9%E6%B1%82%E5%92%8C.png)
我想对以下形式的浮点数求和: 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}*”。