使用bc处理多个数据源

问题描述 投票:-1回答:4

我有一个包含列中数字的文件:

[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

我怎样才能做到这一点?

linux bash bc
4个回答
2
投票
bc -l <<< '('$(paste -s -d+ numbers.txt)')/60'

3
投票

使用awk:

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

How it works

  • s+=$1 numbers.txt每个留置权的数字被添加到变量s
  • END{print s/60} 读完文件后,我们打印s的值除以60。

0
投票
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" ...

非常紧张


0
投票

你可以使用dc

dc -f numbers.txt -e '++3k60/[result = ]np'
© www.soinside.com 2019 - 2024. All rights reserved.