awk 小数除法

Sol*_*osa 0 awk text-processing

我有一个包含值的文件,有些是整数,有些是小数

# cat file    
value1 100
value2 500.10
value3 2505
value4 35.4
Run Code Online (Sandbox Code Playgroud)

我想将 field2 中的每个值除以固定数字 = 1000,并在除法后将所有值相加。结果值必须保留小数点后 5 位

# cat output.txt
value1 100 0.10000
value2 500.10 0.50010
value3 2505 2.50500
value4 35.4 0.03450
sum   3140.50000 3.14050   
Run Code Online (Sandbox Code Playgroud)

jes*_*e_b 5

我相信您的总和值已关闭,但您可以使用以下内容:

{
        div = $2 / 1000
        sum += $2
        divsum += div
        printf "%s %.5f\n", $0, div
}

END {
        printf "sum %.5f %.5f\n", sum, divsum
}
Run Code Online (Sandbox Code Playgroud)
$ awk '{div=$2/1000;sum+=$2; divsum+=div; printf "%s %.5f\n", $0, div}END{printf "sum %.5f %.5f\n", sum, divsum}' file
value1 100 0.10000
value2 500.10 0.50010
value3 2505 2.50500
value4 35.4 0.03540
sum 3140.50000 3.14050
Run Code Online (Sandbox Code Playgroud)

  • 您还可以执行 `awk 'BEGIN{OFMT="%.5f"}{divsum+=div=$2/1000;sum+=$2; print $0, div}END{print "sum", sum, divsum}'`; 请参阅此处的 OFMT 详细信息 https://www.gnu.org/software/gawk/manual/html_node/OFMT.html (2认同)