从文件中抓取数字并加在一起

时间:2014-05-05 05:22:20

标签: linux shell awk

我有这样的文件
文件A:

min:353 max:685 avg:519
min:565 max:7984 avg:4274
min:278 max:5617 avg:2947
min:624 max:6768 avg:3639
min:27 max:809 avg:418
min:809 max:3685 avg:2247
min:958 max:2276 avg:1617

我试图获得最后两行平均数来一起广告。
2247+1617相似,而不是输出值3864。 我怎样才能实现它?

到目前为止,我的代码是这样的:(抱歉知识有限)

tail -n 2 file.A | awk -F '[: ]' '{print $6}'

3 个答案:

答案 0 :(得分:4)

以下是仅awk

awk -F: 'FNR==NR {n=NR;next} FNR>n-2 {sum+=$NF}END{print sum}' file.A{,}
3864

或者你可以将最后两个值相加:

awk -F: '{f=s;s=$NF}END{print s+f}' file.A
3864

答案 1 :(得分:3)

您似乎想要添加最后一个字段。这会将最后一个字段添加到变量中。输入用完后会执行END块,因此最后会打印sum

tail -2 file.A | awk -F: '{sum+=$NF}END{print sum}'

答案 2 :(得分:3)

devnull's类似的方法,但使用tac

tac file.A | awk -F: '{sum+=$NF}NR==2{print sum;exit}'
3864
  • tac撤消文件
  • 使用awk我们sum最后一列($NF)。
  • 当行号为2时,我们打印sum并退出。