与BC一起处理的多个数据源



i有此文件,该文件包含列中的数字:

[root@server1]# cat numbers.txt
30
25
15

我需要将它们添加在一起,所以我这样做:

[root@autonoc cattests]# cat numbers.txt |  paste -s -d+ | bc
70

但是,在我加在一起之后,我需要将它们除以60,类似的东西:

[root@server1]# cat numbers.txt |  paste -s -d+ | "new command" | bc

我该怎么做?

使用awk:

$ awk '{s+=$1} END{print s/60}' numbers.txt
1.16667

它如何工作

  • s+=$1

    numbers.txt的每个留置权上的数字添加到变量s

  • END{print s/60}

    我们读取文件后,我们打印s的值除以60。

bc -l <<< '('$(paste -s -d+ numbers.txt)')/60'
awk -v div=60 '{tot+=$0}END{print tot/div}' numbers.txt

使用-v div=60可以进一步扩展以接受任何用户输入,例如

read -p "Enter the div value: " div
awk -v div="$div" ...

ihth

您可以使用DC

dc -f numbers.txt -e '++3k60/[result = ]np'

最新更新