使用awk命令求和,然后追加列的值

时间:2019-01-31 21:12:37

标签: bash shell scripting

我正在尝试附加,我的文件标记的求和结果,求和后


我的文件位于 / home / evaluation 中,并且包含以下内容:

  • 英语16
  • 历史14
  • 生物学15

我想要这样的东西

  • 英语16
  • 历史14
  • 生物学15

  • 总数:45


**到目前为止,我去了:

for file in /home/evaluation/* ; do
    awk '{sum+=$2} END {print "total:" sum}' "$file"
done

不幸的是,它仅显示求和值,而不附加它。

2 个答案:

答案 0 :(得分:2)

您是否无法像这样执行awk命令,而只是执行>>附加操作?

awk '{sum+=$2} END {print "total:" sum}' "$file" >> $file

您可以使其更加优雅-例如添加if条件,仅在行total:不存在时才添加。

答案 1 :(得分:1)

使用GNU awk:

$ awk '{t+=$2}ENDFILE{print "Total",t >> FILENAME}' file
$ cat file
English 16
History 14
Biology 15
Total 45

strace之后,我认为如果将close(FILENAME)用于多个文件,应该在ENDFILE的末尾添加一个{{1}}。