我正在尝试在求和文件标记后附加文件标记的求和结果。
我的文件位于/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)
。