如果在 Gawk 中

now*_*wy1 0 awk

我有一个例子:

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 
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢你的解释。

man*_*ork 5

可能,但不是那样。您必须为三元运算符提供表达式。在 AWK 中printf是一个语句,所以你不能在那里使用它,就像你也不能有一样{}

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

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