我有以下printf
printf ("%-6st%6.3fn",msg,sum[msg]/count[msg])
阵列如下:
sum[$2] += $3
count[$2]++
$2 = test1
随机下不同线路上的$3 = 0 - 9
我要做一个if语句,说如果sum[msg]
或count[msg]
==0,那么用-
替换
我不确定是否必须执行以下操作:
if (count[msg] == 0 || sum[msg] == 0) {
printf ("%-6st-n",msg)
}
或者可以把if放在printf
中,如下所示:
printf ("%-6st%6.3fn",msg,if (count[msg] == 0 || sum[msg] == 0) {print -} else sum[msg]/count[msg])
此外,如果实际的sum[$2] += $3
没有匹配的行,则返回0
或null
我们非常感谢所有的帮助。
printf "%-6st%sn",msg,(sum[msg]*count[msg]?sprintf("%6.3f",sum[msg]/count[msg]):"-")
但请务必阅读阿诺德·罗宾斯(Arnold Robbins(的《高效Awk编程》(Effective Awk Programming,4th Edition(一书,以获得基础,这样你就不必在每一步都不断寻求帮助。