给定一个字段中的数字列表,如何对它们求和并在 (n)awk 脚本中打印它们?

Given a list of numbers in a field, how to sum them and print them in an (n)awk script?

鉴于此姓名和号码列表:

Kirilienko:47
James:23 
Bryant:24
Durant:35
Griffin:32

我如何找到第二个字段中的数字的总和并在 awk script 中打印它们,在句子中:

print "The total number of these five players is [161]."

我做了一些研究,发现对列求和的一般方法是 awk {sum += } END{print sum}。我试图在我的脚本中实现这个,只是 return sum = 0。

设置字段分隔符为:,得到第二个字段的和。在 END 块中打印带有所需文本的总和:

awk -F: '{sum+=} END{print "The total number of these five players is ["sum"]."}' file.txt

示例:

% cat file.txt
Kirilienko:47
James:23 
Bryant:24
Durant:35
Griffin:32

% awk -F: '{sum+=} END{print "The total number of these five players is ["sum"]."}' file.txt
The total number of these five players is [161].

虽然问题指定 awk,但有其他选择也无妨。在这种特殊情况下,您也可以纯粹在 Bash:

中执行此操作
sum=0
while read num
do 
    num="${num#*:}"
    sum=$(( $num + $sum ))
done < file.txt
echo "The total number of these five players is $sum"

输出:

The total number of these five players is 161