这是我的输入文件:
$ cat abc
0 1
2 3
4 5
为什么以下代码提供单列输出而不是双列输出?
$ cat abc | awk '{ print $1==0?"000":"111" $1==0? "222":"333" }'
000
333
333
输出是否应该如下?
000 222
111 333
111 333
答案 0 :(得分:1)
我认为awk
将解析为:
awk '{ print ($1==0) ? "000" : (("111" $1==0) ? "222" : "333") }'
也就是说,当它打印三个零时,它甚至不考虑其余的操作。当它不打印三个零时,它会打印三个三分,因为与任何字符串连接的"111"
不会评估为零。
您可能想要使用:
awk '{ print ($1==0?"000":"111"), ($1==0? "222":"333") }'
其中逗号在两个字符串之间的输出中放置一个空格(确切地说是OFS或输出字段分隔符)。或者您可能更喜欢:
awk '{ print ($1==0?"000":"111") ($1==0? "222":"333") }'
将两个字符串连接起来,没有空格。