AWK - if 和 printf,之前或之内
AWK - if and printf, before or within
我有以下printf
printf ("%-6s\t%6.3f\n",msg,sum[msg]/count[msg])
数组如下:
sum[] +=
count[]++
= test1
= 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[] +=
没有匹配的行,那么 return 0
或 null
非常感谢所有帮助。
printf "%-6s\t%s\n",msg,(sum[msg]*count[msg]?sprintf("%6.3f",sum[msg]/count[msg]):"-")
但请务必阅读 Arnold Robbins 撰写的《Effective Awk Programming》第 4 版,打下基础,这样您就不必每一步都寻求帮助。
我有以下printf
printf ("%-6s\t%6.3f\n",msg,sum[msg]/count[msg])
数组如下:
sum[] +=
count[]++
= test1
= 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[] +=
没有匹配的行,那么 return 0
或 null
非常感谢所有帮助。
printf "%-6s\t%s\n",msg,(sum[msg]*count[msg]?sprintf("%6.3f",sum[msg]/count[msg]):"-")
但请务必阅读 Arnold Robbins 撰写的《Effective Awk Programming》第 4 版,打下基础,这样您就不必每一步都寻求帮助。