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



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


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

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

我想要这样的东西

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

  • 总数 : 45


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

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

只打印求和值,但不附加它。

您是否无法使awk命令像这样并仅执行>>追加?

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

您可以使其稍微优雅一些 - 例如,添加一个 if 条件以仅在行不存在时添加行total:

使用 GNU awk:

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

strace了一些之后,我认为如果您将其用于多个文件,则ENDFILE末尾应该有一个close(FILENAME)

相关内容

  • 没有找到相关文章

最新更新