给定一个字段中的数字列表,如何对它们求和并在 (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
鉴于此姓名和号码列表:
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