【问题标题】:How to sum a series of numbers in bash如何在bash中对一系列数字求和
【发布时间】:2015-03-08 12:28:27
【问题描述】:

我在 Linux 中运行这个 bash 代码:

B=$(top -d 1 -b -n 9| grep $A | awk '{print $9}' | bc)

其中 A 是一个进程名称。它将被设置为这样的:

38.7 69.1 81.0 83.3 86.9 87.3 88.3 89.3 90.2

我想在 bash 中对这些数字求和。我试过了:

B=$B+$(top -d 1 -b -n 9| grep $A | awk '{print $9}' | bc)

但它不能正常工作。 我怎样才能得到这些数字的总和?

【问题讨论】:

    标签: linux bash terminal linux-mint


    【解决方案1】:
    echo 38.7 69.1 81.0 83.3 86.9 87.3 88.3 89.3 90.2 |
        tr ' ' \\n | awk '{s+=$0}END{print s}'
    

    在您的情况下,您可以简单地将管道中的 awk 替换为:

    awk '{s+=$9}END{print s}'
    

    【讨论】:

    • 我使用 echo $B | awk '{s+=$9}END{print s}' 其中 B 是上面的最高命令结果,但它只给了我最后一个数字
    • 是的,您给出的命令确实会打印最后一个数字(更准确地说,是第 9 个数字)。尝试使用此答案中提供的命令之一。 (例如,echo $B | tr ' ' \\n | awk '{s+=$0}END{print s}'
    猜你喜欢
    • 2013-10-24
    • 2011-03-06
    • 2014-10-12
    • 1970-01-01
    • 2014-01-02
    • 2015-08-26
    • 2018-11-10
    • 1970-01-01
    • 2014-10-24
    相关资源
    最近更新 更多