我有以下printf
printf ("%-6s\t%6.3f\n",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 ("%-6s\t-\n",msg)
}
或是否可以将if放在printf
之内,如下所示:
printf ("%-6s\t%6.3f\n",msg,if (count[msg] == 0 || sum[msg] == 0) {print -} else sum[msg]/count[msg])
此外,如果实际sum[$2] += $3
没有匹配的行,则会返回0
或null
非常感谢所有帮助。
答案 0 :(得分:2)
printf "%-6s\t%s\n",msg,(sum[msg]*count[msg]?sprintf("%6.3f",sum[msg]/count[msg]):"-")
但是请阅读Arnold Robbins撰写的有效Awk编程,第4版,以获得一个基础,这样你就不必在每一步都不断寻求帮助。