2012-01-11 105 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