gAWK-if和printf,在前面或里面



我有以下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没有匹配的行,则返回0null

我们非常感谢所有的帮助。

printf "%-6st%sn",msg,(sum[msg]*count[msg]?sprintf("%6.3f",sum[msg]/count[msg]):"-")

但请务必阅读阿诺德·罗宾斯(Arnold Robbins(的《高效Awk编程》(Effective Awk Programming,4th Edition(一书,以获得基础,这样你就不必在每一步都不断寻求帮助。

最新更新