三項演算子を使用した条件式でawkを印刷する

三項演算子を使用した条件式でawkを印刷する

入力例:

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

奇妙な処理:

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

Q:上記の内容を短いif表記で実行できますか?同様のことを試しましたが、上記のように出力は返されません。

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

答え1

0false条件に従って評価され、$4 ? $4 : "-"達成されました"-"。 4番目のフィールドが空であることを確認するには、
条件を指定してください。$4 != ""

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

関連情報