首页 > 解决方案 > awk:未处理任何行时打印 0 而不是空白

问题描述

考虑这个总结文件中特定字段的所有值的 awk 示例:

awk '{sum+=$2} END{print "total: ",sum}' file.txt

当文件为空时,awk 不会为 sum 输出任何内容。在这些情况下是否可以输出“0”?

标签: shellawk

解决方案


按照我对这个特定用例的偏好(从最喜欢到最不喜欢)的顺序:

awk '{sum+=$2} END{print "total: ",sum+0}' file.txt

或者

awk '{sum+=$2} END{printf "total: %d\n",sum}' file.txt

或者

awk 'BEGIN{sum=0} {sum+=$2} END{print "total: ",sum}' file.txt

推荐阅读