bash awk从一个数字col中提取和求和值

use*_*834 1 bash awk

我在文件中有一些数据:

$ cat data.txt
facture-2817806.txt Total TTC 27.11 €
facture-2857125.txt Total TTC 37.92 €
facture-2895824.txt Total TTC 43.61 €
facture-2922275.txt Total TTC 46.73 €
facture-2935969.txt Total TTC  8.29 €
facture-2977623.txt Total TTC 41.79 €
facture-3005553.txt Total TTC 46.18 €
facture-3020047.txt Total TTC 20.34 €
facture-3061124.txt Total TTC 28.22 €
facture-3097529.txt Total TTC 59.65 €
facture-3258989.txt Total TTC 29.31 €
facture-3637195.txt Total TTC 11.17 €
facture-3681794.txt Total TTC 44.52 €
facture-3726992.txt Total TTC 28.20 €
facture-3752273.txt Total TTC 42.15 €
facture-3770970.txt Total TTC 24.01 €
Run Code Online (Sandbox Code Playgroud)

我想总结一个col的浮点值,我提取列:

$ cat data.txt | awk '{print $4}'
27.11
37.92
43.61
46.73
8.29
41.79
46.18
20.34
28.22
59.65
29.31
11.17
44.52
28.20
42.15
24.01
$
Run Code Online (Sandbox Code Playgroud)

什么是一个很好的bash方式来获得与另一个管道'|'的总和 ?

$ cat data.txt | awk '{print $4}' | xxx
Run Code Online (Sandbox Code Playgroud)

注意:这里有一个类似的问题:为什么AWK拒绝总结浮点数,但在我的文件中,浮点数并不是唯一的.我在管道后面寻找一个额外的衬管.

sjs*_*sam 5

我想总结一个col的浮点值

惯用的方式

awk '{count+=$4}END{printf "Total : %f\n",count}' your_file
Run Code Online (Sandbox Code Playgroud)

艰难的方式

awk 'BEGIN{count=0}{count+=$4}END{printf "Total : %f\n",count}' your_file
Run Code Online (Sandbox Code Playgroud)

作为旁注,如果你想指定小数点后面的位数使用类似的东西%0.2f.

注意:您根本不需要管道.