如果 Gawk 中的 Else

如果 Gawk 中的 Else

我有一个例子:

echo $(seq 9) | awk '{for(i=1;i<=NF;i++) if(i!=5&&i!=6) {printf "%s ",i}else{printf "%s ",""} print ""}'
1 2 3 4   7 8 9 

是否可以使用该命令的简写?

echo $(seq 9)| awk '{for(i=1;i<=NF;i++) (i!=5&&i!=6) ? {printf "%s ",i} : {printf "%s ",""} print ""}'

谢谢你的解释。

答案1

有可能,但不是那样。您必须向三元运算符提供表达式。在 AWK 中printf是一个语句,因此您不能在那里使用它,就像您两者都不能使用{}一样。

因为无论如何你都不需要两个printf语句,所以最好这样写:

seq -s ' ' 9 | awk '{for(i=1;i<=NF;i++) printf "%s ", i!=5&&i!=6 ? i : ""; print ""}'

相关内容