2012-01-11 107 views
0

输入:缺少的头

position fst 
1 0.6 
2 0.8 
3 0.9 
4 0.3 
5 1 

这给了我一个头:

awk '{if ($2>=0.7) print $1}' input > output 

但这并不:

awk '{if ($2<0.7) print $1}' input > output 

怎么来的?

+0

我不能告诉你为什么没有你的'输入'! – kev 2012-01-11 12:14:50

+0

你是什么意思的'头'?我们可以有一个“输入”的小样本吗?如果该行的第二列大于等于0.7,那么前一个命令会打印行的第一列中的值,如果其值小于0.7,则打印该值。所以也许你没有得到任何东西,因为第二列的所有值都小于0.7。 – 2012-01-11 12:15:27

+0

对我来说,它打印所有$ 1。我认为你的数字正在被截断。 – 2012-01-11 12:29:55

回答

1

如果你总是想打印头,然后使用:

awk '{if (NR>1) {if ($2>=0.7) print $1} else print $1}' 
awk '{if (NR>1) {if ($2<0.7) print $1} else print $1}' 
4

在你的第二个例子,$2<0.7被解释为"fst"<"0.7"这是FALSE

您可以添加NR==1 ||始终打印第一行:

$ awk 'NR==1 || $2<0.7{print $1}' input 
position 
1 
4