我有一个例子:
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)
谢谢你的解释。
可能,但不是那样。您必须为三元运算符提供表达式。在 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)