awk print 带有带有三元运算符的条件表达式

awk print 带有带有三元运算符的条件表达式

输入示例:

1:2:3:0:5
1:2:3::5

awk处理:

$ echo -e "1:2:3:0:5\n1:2:3::5"|awk -F: '{if($4!="") print NR,$4; else print NR,"-"}'
1 0
2 -

问题:上面可以用简短的 if 表示法运行吗?我尝试了类似的方法,但它不会返回如上所述的输出。

$ echo -e "1:2:3:0:5\n1:2:3::5"|awk -F: '{print NR,($4 ? $4 : "-")}'
1 -
2 -

答案1

0被评估为false并按条件$4 ? $4 : "-"达到"-"。要检查第四个字段是否为空,应指定
条件。$4 != ""

awk -F':' '{ print NR, ($4 != ""? $4 : "-") }' file

相关内容